Compare commits

...

5 Commits

Author SHA1 Message Date
Glicz e11204d632
Merge 503e8bd7e1 into abb1803aaf 2024-05-10 21:59:18 +02:00
EnZaXD abb1803aaf
Cache dimensions without namespace in 1.19->1.18.2 (#744) 2024-05-10 21:47:45 +02:00
Nassim Jahnke e45a95c6ec
Bump version to 4.10.3-SNAPSHOT 2024-05-10 21:47:35 +02:00
Nassim Jahnke 17bda0fc29
4.10.2 Release 2024-05-10 13:24:40 +02:00
GliczDev 503e8bd7e1 Rebase onto 'upstream/master' 2024-02-15 22:32:21 +01:00
5 changed files with 48 additions and 15 deletions

View File

@ -68,7 +68,7 @@ import java.util.logging.Logger;
public interface ViaBackwardsPlatform {
String MINIMUM_VV_VERSION = "4.10.1";
String MINIMUM_VV_VERSION = "4.10.2";
/**
* Initialize ViaBackwards.

View File

@ -133,11 +133,11 @@ public final class EntityPackets1_19 extends EntityRewriter<ClientboundPackets1_
final ListTag<CompoundTag> dimensions = TagUtil.getRegistryEntries(registry, "dimension_type");
boolean found = false;
for (final CompoundTag dimension : dimensions) {
final StringTag nameTag = dimension.getStringTag("name");
final String name = Key.stripMinecraftNamespace(dimension.getString("name"));
final CompoundTag dimensionData = dimension.getCompoundTag("element");
dimensionRegistryStorage.addDimension(nameTag.getValue(), dimensionData.copy());
dimensionRegistryStorage.addDimension(name, dimensionData.copy());
if (!found && Key.stripMinecraftNamespace(nameTag.getValue()).equals(dimensionKey)) {
if (!found && name.equals(dimensionKey)) {
wrapper.write(Type.NAMED_COMPOUND_TAG, dimensionData);
found = true;
}

View File

@ -24,6 +24,7 @@ import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap;
import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag;
import java.util.HashMap;
import java.util.Map;
import com.viaversion.viaversion.util.Key;
import org.checkerframework.checker.nullness.qual.Nullable;
public final class DimensionRegistryStorage implements StorableObject {
@ -32,7 +33,7 @@ public final class DimensionRegistryStorage implements StorableObject {
private final Int2ObjectMap<CompoundTag> chatTypes = new Int2ObjectOpenHashMap<>();
public @Nullable CompoundTag dimension(final String dimensionKey) {
final CompoundTag compoundTag = dimensions.get(dimensionKey);
final CompoundTag compoundTag = dimensions.get(Key.stripMinecraftNamespace(dimensionKey));
return compoundTag != null ? compoundTag.copy() : null;
}

View File

@ -43,7 +43,31 @@ public final class EntityPackets1_19_4 extends EntityRewriter<ClientboundPackets
@Override
public void registerPackets() {
registerTrackerWithData1_19(ClientboundPackets1_19_4.SPAWN_ENTITY, EntityTypes1_19_4.FALLING_BLOCK);
protocol.registerClientbound(ClientboundPackets1_19_4.SPAWN_ENTITY, new PacketHandlers() {
@Override
public void register() {
map(Type.VAR_INT); // Entity id
map(Type.UUID); // Entity UUID
map(Type.VAR_INT); // Entity type
map(Type.DOUBLE); // X
map(Type.DOUBLE); // Y
map(Type.DOUBLE); // Z
map(Type.BYTE); // Pitch
map(Type.BYTE); // Yaw
map(Type.BYTE); // Head yaw
map(Type.VAR_INT); // Data
handler(wrapper -> {
if (typeFromId(wrapper.get(Type.VAR_INT, 1)) == EntityTypes1_19_4.BLOCK_DISPLAY) {
wrapper.set(Type.VAR_INT, 1, EntityTypes1_19_4.FALLING_BLOCK.getId());
wrapper.set(Type.VAR_INT, 2, 1);
wrapper.set(Type.DOUBLE, 0, wrapper.get(Type.DOUBLE, 0) + 0.5);
wrapper.set(Type.DOUBLE, 2, wrapper.get(Type.DOUBLE, 2) + 0.5);
}
});
handler(getSpawnTrackerWithDataHandler1_19(EntityTypes1_19_4.FALLING_BLOCK));
}
});
registerRemoveEntities(ClientboundPackets1_19_4.REMOVE_ENTITIES);
registerMetadataRewriter(ClientboundPackets1_19_4.ENTITY_METADATA, Types1_19_4.METADATA_LIST, Types1_19_3.METADATA_LIST);
@ -156,6 +180,7 @@ public final class EntityPackets1_19_4 extends EntityRewriter<ClientboundPackets
}
});
filter().type(EntityTypes1_19_4.TEXT_DISPLAY).cancel(8); // Interpolation delay
filter().type(EntityTypes1_19_4.TEXT_DISPLAY).index(22).handler(((event, meta) -> {
// Send as custom display name
event.setIndex(2);
@ -165,13 +190,17 @@ public final class EntityPackets1_19_4 extends EntityRewriter<ClientboundPackets
final JsonElement element = meta.value();
protocol.getTranslatableRewriter().processText(event.user(), element);
}));
filter().type(EntityTypes1_19_4.DISPLAY).handler((event, meta) -> {
// TODO Maybe spawn an extra entity to ride the armor stand for blocks and items
// Remove a large heap of display metadata
if (event.index() > 7) {
event.cancel();
}
filter().type(EntityTypes1_19_4.ITEM_DISPLAY).index(22).handler((event, meta) -> {
event.setIndex(8);
event.createExtraMeta(new Metadata(5, Types1_19_3.META_TYPES.booleanType, true)); // No gravity
});
for (int i = 9; i < 22; i++) {
filter().type(EntityTypes1_19_4.DISPLAY).cancel(i);
/*
Interpolation Duration, Translation, scale, rotation left, rotation right, billboard constraints,
brightness override, view range, shadow radius, shadow strength, width, height, glow color override
*/
}
filter().type(EntityTypes1_19_4.INTERACTION).removeIndex(8); // Width
filter().type(EntityTypes1_19_4.INTERACTION).removeIndex(9); // Height
@ -181,6 +210,10 @@ public final class EntityPackets1_19_4 extends EntityRewriter<ClientboundPackets
filter().type(EntityTypes1_19_4.SNIFFER).removeIndex(18); // Drop seed at tick
filter().type(EntityTypes1_19_4.ABSTRACT_HORSE).addIndex(18); // Owner UUID
filter().type(EntityTypes1_19_4.FALLING_BLOCK).handler((event, meta) ->
event.createExtraMeta(new Metadata(5, Types1_19_3.META_TYPES.booleanType, true)) // No gravity
);
}
@Override
@ -193,8 +226,7 @@ public final class EntityPackets1_19_4 extends EntityRewriter<ClientboundPackets
storage.add(new Metadata(15, Types1_19_3.META_TYPES.byteType, (byte) (0x01 | 0x10))); // Small marker
};
mapEntityTypeWithData(EntityTypes1_19_4.TEXT_DISPLAY, EntityTypes1_19_4.ARMOR_STAND).spawnMetadata(displayMetaCreator);
mapEntityTypeWithData(EntityTypes1_19_4.ITEM_DISPLAY, EntityTypes1_19_4.ARMOR_STAND).spawnMetadata(displayMetaCreator);
mapEntityTypeWithData(EntityTypes1_19_4.BLOCK_DISPLAY, EntityTypes1_19_4.ARMOR_STAND).spawnMetadata(displayMetaCreator);
mapEntityTypeWithData(EntityTypes1_19_4.ITEM_DISPLAY, EntityTypes1_19_4.ITEM);
mapEntityTypeWithData(EntityTypes1_19_4.INTERACTION, EntityTypes1_19_4.ARMOR_STAND).spawnMetadata(displayMetaCreator); // Not much we can do about this one

View File

@ -1,4 +1,4 @@
projectVersion=4.10.2-SNAPSHOT
projectVersion=4.10.3-SNAPSHOT
# Smile emoji
mcVersions=1.20.6,1.20.5,1.20.4, 1.20.3, 1.20.2, 1.20.1, 1.20, 1.19.4, 1.19.3, 1.19.2, 1.19.1, 1.19, 1.18.2, 1.18.1, 1.18, 1.17.1, 1.17, 1.16.5, 1.16.4, 1.16.3, 1.16.2, 1.16.1, 1.16, 1.15.2, 1.15.1, 1.15, 1.14.4, 1.14.3, 1.14.2, 1.14.1, 1.14, 1.13.2, 1.13.1, 1.13, 1.12.2, 1.12.1, 1.12, 1.11.2, 1.11.1, 1.11, 1.10.2, 1.10.1, 1.10