3
0
Mirror von https://github.com/ViaVersion/ViaBackwards.git synchronisiert 2024-12-27 08:30:10 +01:00

Send valid biomes again + remap new ones (#136)

* Remap biomes

* Fix base shulker box remappings, remove unnecessary int/short casting
Dieser Commit ist enthalten in:
Nassim 2019-08-18 09:09:45 +02:00 committet von Myles
Ursprung 3ecf898d0a
Commit 781ef86af6
4 geänderte Dateien mit 63 neuen und 29 gelöschten Zeilen

Datei anzeigen

@ -43,9 +43,9 @@ public abstract class BlockItemRewriter<T extends BackwardsProtocol> extends Rew
protected Item handleItemToClient(Item i) { protected Item handleItemToClient(Item i) {
if (i == null) if (i == null)
return null; return null;
if (!replacementData.containsKey((int) i.getId())) if (!replacementData.containsKey(i.getIdentifier()))
return i; return i;
BlockItemSettings data = replacementData.get((int) i.getId()); BlockItemSettings data = replacementData.get(i.getIdentifier());
Item original = ItemUtil.copyItem(i); Item original = ItemUtil.copyItem(i);
if (data.hasRepItem()) { if (data.hasRepItem()) {

Datei anzeigen

@ -255,7 +255,6 @@ public class BlockItemPackets1_13 extends BlockItemRewriter<Protocol1_12_2To1_13
Chunk1_13Type type = new Chunk1_13Type(clientWorld); Chunk1_13Type type = new Chunk1_13Type(clientWorld);
Chunk chunk = wrapper.read(type); Chunk chunk = wrapper.read(type);
// Handle Block Entities before block rewrite // Handle Block Entities before block rewrite
BackwardsBlockEntityProvider provider = Via.getManager().getProviders().get(BackwardsBlockEntityProvider.class); BackwardsBlockEntityProvider provider = Via.getManager().getProviders().get(BackwardsBlockEntityProvider.class);
BackwardsBlockStorage storage = wrapper.user().get(BackwardsBlockStorage.class); BackwardsBlockStorage storage = wrapper.user().get(BackwardsBlockStorage.class);
@ -324,10 +323,35 @@ public class BlockItemPackets1_13 extends BlockItemRewriter<Protocol1_12_2To1_13
} }
// Rewrite biome id 255 to plains
if (chunk.isBiomeData()) { if (chunk.isBiomeData()) {
for (int i = 0; i < 256; i++) { for (int i = 0; i < 256; i++) {
chunk.getBiomeData()[i] = 1; // Plains int biome = chunk.getBiomeData()[i];
int newId = -1;
switch (biome) {
case 40: // end biomes
case 41:
case 42:
case 43:
newId = 9;
break;
case 47: // deep ocean biomes
case 48:
case 49:
newId = 24;
break;
case 50: // deep frozen... let's just pick the frozen variant
newId = 10;
break;
case 44: // the other new ocean biomes
case 45:
case 46:
newId = 0;
break;
}
if (newId != -1) {
chunk.getBiomeData()[i] = newId;
}
} }
} }
@ -617,7 +641,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter<Protocol1_12_2To1_13
} }
if (rawId == null) { if (rawId == null) {
Integer oldId = MappingData.oldToNewItems.inverse().get((int) item.getId()); Integer oldId = MappingData.oldToNewItems.inverse().get(item.getIdentifier());
if (oldId != null) { if (oldId != null) {
// Handle spawn eggs // Handle spawn eggs
Optional<String> eggEntityId = SpawnEggRewriter.getEntityId(oldId); Optional<String> eggEntityId = SpawnEggRewriter.getEntityId(oldId);
@ -633,22 +657,24 @@ public class BlockItemPackets1_13 extends BlockItemRewriter<Protocol1_12_2To1_13
} else { } else {
rawId = (oldId >> 4) << 16 | oldId & 0xF; rawId = (oldId >> 4) << 16 | oldId & 0xF;
} }
} else if (item.getIdentifier() == 362) { // base/colorless shulker box
rawId = 0xe50000; // purple shulker box
} }
} }
if (rawId == null) { if (rawId == null) {
if (!Via.getConfig().isSuppress1_13ConversionErrors() || Via.getManager().isDebug()) { if (!Via.getConfig().isSuppress1_13ConversionErrors() || Via.getManager().isDebug()) {
ViaBackwards.getPlatform().getLogger().warning("Failed to get 1.12 item for " + item.getId()); ViaBackwards.getPlatform().getLogger().warning("Failed to get 1.12 item for " + item.getIdentifier());
} }
rawId = 0x10000; // Stone rawId = 0x10000; // Stone
} }
item.setId((short) (rawId >> 16)); item.setIdentifier(rawId >> 16);
item.setData((short) (rawId & 0xFFFF)); item.setData((short) (rawId & 0xFFFF));
// NBT changes // NBT changes
if (tag != null) { if (tag != null) {
if (isDamageable(item.getId())) { if (isDamageable(item.getIdentifier())) {
if (tag.get("Damage") instanceof IntTag) { if (tag.get("Damage") instanceof IntTag) {
if (!gotRawIdFromTag) if (!gotRawIdFromTag)
item.setData((short) (int) tag.get("Damage").getValue()); item.setData((short) (int) tag.get("Damage").getValue());
@ -656,7 +682,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter<Protocol1_12_2To1_13
} }
} }
if (item.getId() == 358) { // map if (item.getIdentifier() == 358) { // map
if (tag.get("map") instanceof IntTag) { if (tag.get("map") instanceof IntTag) {
if (!gotRawIdFromTag) if (!gotRawIdFromTag)
item.setData((short) (int) tag.get("map").getValue()); item.setData((short) (int) tag.get("map").getValue());
@ -664,7 +690,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter<Protocol1_12_2To1_13
} }
} }
if (item.getId() == 442 || item.getId() == 425) { // shield / banner if (item.getIdentifier() == 442 || item.getIdentifier() == 425) { // shield / banner
if (tag.get("BlockEntityTag") instanceof CompoundTag) { if (tag.get("BlockEntityTag") instanceof CompoundTag) {
CompoundTag blockEntityTag = tag.get("BlockEntityTag"); CompoundTag blockEntityTag = tag.get("BlockEntityTag");
if (blockEntityTag.get("Base") instanceof IntTag) { if (blockEntityTag.get("Base") instanceof IntTag) {
@ -837,16 +863,16 @@ public class BlockItemPackets1_13 extends BlockItemRewriter<Protocol1_12_2To1_13
CompoundTag tag = item.getTag(); CompoundTag tag = item.getTag();
// Save original id // Save original id
int originalId = (item.getId() << 16 | item.getData() & 0xFFFF); int originalId = (item.getIdentifier() << 16 | item.getData() & 0xFFFF);
int rawId = (item.getId() << 4 | item.getData() & 0xF); int rawId = (item.getIdentifier() << 4 | item.getData() & 0xF);
// NBT Additions // NBT Additions
if (isDamageable(item.getId())) { if (isDamageable(item.getIdentifier())) {
if (tag == null) item.setTag(tag = new CompoundTag("tag")); if (tag == null) item.setTag(tag = new CompoundTag("tag"));
tag.put(new IntTag("Damage", item.getData())); tag.put(new IntTag("Damage", item.getData()));
} }
if (item.getId() == 358) { // map if (item.getIdentifier() == 358) { // map
if (tag == null) item.setTag(tag = new CompoundTag("tag")); if (tag == null) item.setTag(tag = new CompoundTag("tag"));
tag.put(new IntTag("map", item.getData())); tag.put(new IntTag("map", item.getData()));
} }
@ -854,7 +880,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter<Protocol1_12_2To1_13
// NBT Changes // NBT Changes
if (tag != null) { if (tag != null) {
// Invert shield color id // Invert shield color id
if (item.getId() == 442 || item.getId() == 425) { if (item.getIdentifier() == 442 || item.getIdentifier() == 425) {
if (tag.get("BlockEntityTag") instanceof CompoundTag) { if (tag.get("BlockEntityTag") instanceof CompoundTag) {
CompoundTag blockEntityTag = tag.get("BlockEntityTag"); CompoundTag blockEntityTag = tag.get("BlockEntityTag");
if (blockEntityTag.get("Base") instanceof IntTag) { if (blockEntityTag.get("Base") instanceof IntTag) {
@ -910,7 +936,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter<Protocol1_12_2To1_13
} }
// Handle SpawnEggs // Handle SpawnEggs
if (item.getId() == 383) { if (item.getIdentifier() == 383) {
if (tag.get("EntityTag") instanceof CompoundTag) { if (tag.get("EntityTag") instanceof CompoundTag) {
CompoundTag entityTag = tag.get("EntityTag"); CompoundTag entityTag = tag.get("EntityTag");
if (entityTag.get("id") instanceof StringTag) { if (entityTag.get("id") instanceof StringTag) {
@ -937,24 +963,32 @@ public class BlockItemPackets1_13 extends BlockItemRewriter<Protocol1_12_2To1_13
} }
} }
int newId = -1;
if (!MappingData.oldToNewItems.containsKey(rawId)) { if (!MappingData.oldToNewItems.containsKey(rawId)) {
if (!isDamageable(item.getId()) && item.getId() != 358) { // Map if (!isDamageable(item.getIdentifier()) && item.getIdentifier() != 358) { // Map
if (tag == null) item.setTag(tag = new CompoundTag("tag")); if (tag == null) item.setTag(tag = new CompoundTag("tag"));
tag.put(new IntTag(NBT_TAG_NAME, originalId)); // Data will be lost, saving original id tag.put(new IntTag(NBT_TAG_NAME, originalId)); // Data will be lost, saving original id
} }
if (item.getId() == 31 && item.getData() == 0) { // Shrub was removed
if (item.getIdentifier() == 229) { // purple shulker box
newId = 362; // directly set the new id -> base/colorless shulker box
} else if (item.getIdentifier() == 31 && item.getData() == 0) { // Shrub was removed
rawId = 32 << 4; // Dead Bush rawId = 32 << 4; // Dead Bush
} else if (MappingData.oldToNewItems.containsKey(rawId & ~0xF)) { } else if (MappingData.oldToNewItems.containsKey(rawId & ~0xF)) {
rawId &= ~0xF; // Remove data rawId &= ~0xF; // Remove data
} else { } else {
if (!Via.getConfig().isSuppress1_13ConversionErrors() || Via.getManager().isDebug()) { if (!Via.getConfig().isSuppress1_13ConversionErrors() || Via.getManager().isDebug()) {
ViaBackwards.getPlatform().getLogger().warning("Failed to get 1.13 item for " + item.getId()); ViaBackwards.getPlatform().getLogger().warning("Failed to get 1.13 item for " + item.getIdentifier());
} }
rawId = 16; // Stone rawId = 16; // Stone
} }
} }
item.setId(MappingData.oldToNewItems.get(rawId).shortValue()); if (newId == -1) {
newId = MappingData.oldToNewItems.get(rawId);
}
item.setIdentifier(newId);
item.setData((short) 0); item.setData((short) 0);
item = super.handleItemToServer(item); item = super.handleItemToServer(item);
return item; return item;

Datei anzeigen

@ -155,7 +155,7 @@ public class InventoryPackets1_13_1 {
public static void toClient(Item item) { public static void toClient(Item item) {
if (item == null) return; if (item == null) return;
item.setId((short) getOldItemId(item.getId())); item.setIdentifier(getOldItemId(item.getIdentifier()));
} }
//1.13.1 Item Id //1.13.1 Item Id
@ -168,7 +168,7 @@ public class InventoryPackets1_13_1 {
public static void toServer(Item item) { public static void toServer(Item item) {
if (item == null) return; if (item == null) return;
item.setId((short) getNewItemId(item.getId())); item.setIdentifier(getNewItemId(item.getIdentifier()));
} }
//1.13 Item Id //1.13 Item Id

Datei anzeigen

@ -4393,12 +4393,12 @@
"minecraft:purpur_slab[type=bottom,waterlogged=true]": "minecraft:purpur_slab[type=bottom,waterlogged=false]", "minecraft:purpur_slab[type=bottom,waterlogged=true]": "minecraft:purpur_slab[type=bottom,waterlogged=false]",
"minecraft:purpur_slab[type=double,waterlogged=true]": "minecraft:purpur_slab[type=double,waterlogged=false]", "minecraft:purpur_slab[type=double,waterlogged=true]": "minecraft:purpur_slab[type=double,waterlogged=false]",
"minecraft:chorus_plant": "minecraft:chorus_plant[down=false,east=false,north=false,south=false,up=false,west=false]", "minecraft:chorus_plant": "minecraft:chorus_plant[down=false,east=false,north=false,south=false,up=false,west=false]",
"minecraft:shulker_box[facing=north]": "minecraft:magenta_shulker_box[facing=north]", "minecraft:shulker_box[facing=north]": "minecraft:purple_shulker_box[facing=north]",
"minecraft:shulker_box[facing=east]": "minecraft:magenta_shulker_box[facing=east]", "minecraft:shulker_box[facing=east]": "minecraft:purple_shulker_box[facing=east]",
"minecraft:shulker_box[facing=south]": "minecraft:magenta_shulker_box[facing=south]", "minecraft:shulker_box[facing=south]": "minecraft:purple_shulker_box[facing=south]",
"minecraft:shulker_box[facing=west]": "minecraft:magenta_shulker_box[facing=west]", "minecraft:shulker_box[facing=west]": "minecraft:purple_shulker_box[facing=west]",
"minecraft:shulker_box[facing=up]": "minecraft:magenta_shulker_box[facing=up]", "minecraft:shulker_box[facing=up]": "minecraft:purple_shulker_box[facing=up]",
"minecraft:shulker_box[facing=down]": "minecraft:magenta_shulker_box[facing=down]", "minecraft:shulker_box[facing=down]": "minecraft:purple_shulker_box[facing=down]",
"minecraft:vine[east=true,north=true,south=true,up=true,west=true]": "minecraft:vine[east=true,north=true,south=true,up=false,west=true]", "minecraft:vine[east=true,north=true,south=true,up=true,west=true]": "minecraft:vine[east=true,north=true,south=true,up=false,west=true]",
"minecraft:vine[east=true,north=true,south=true,up=true,west=false]": "minecraft:vine[east=true,north=true,south=true,up=false,west=false]", "minecraft:vine[east=true,north=true,south=true,up=true,west=false]": "minecraft:vine[east=true,north=true,south=true,up=false,west=false]",
"minecraft:vine[east=true,north=true,south=false,up=true,west=true]": "minecraft:vine[east=true,north=true,south=false,up=false,west=true]", "minecraft:vine[east=true,north=true,south=false,up=true,west=true]": "minecraft:vine[east=true,north=true,south=false,up=false,west=true]",