Skip to content

Commit 8c33faa

Browse files
committed
Move around environment attributes
1 parent 6375718 commit 8c33faa

File tree

3 files changed

+50
-8
lines changed

3 files changed

+50
-8
lines changed

api/src/main/java/com/viaversion/viaversion/api/minecraft/item/data/SwingAnimation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
public record SwingAnimation(int type, int duration) {
3131

32-
private static final int DEFAULT_TYPE = EnumTypes.SWING_ANIMATION.byName("whack");
32+
private static final int DEFAULT_TYPE = EnumTypes.SWING_ANIMATION.idFromName("whack");
3333

3434
public static final Type<SwingAnimation> TYPE = new Type<>(SwingAnimation.class) {
3535
@Override

common/src/main/java/com/viaversion/viaversion/protocols/v1_21_9to1_21_11/Protocol1_21_9To1_21_11.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@
1717
*/
1818
package com.viaversion.viaversion.protocols.v1_21_9to1_21_11;
1919

20+
import com.viaversion.nbt.tag.ByteTag;
21+
import com.viaversion.nbt.tag.CompoundTag;
22+
import com.viaversion.nbt.tag.IntTag;
23+
import com.viaversion.nbt.tag.NumberTag;
24+
import com.viaversion.nbt.tag.Tag;
2025
import com.viaversion.viaversion.api.connection.UserConnection;
2126
import com.viaversion.viaversion.api.data.MappingData;
2227
import com.viaversion.viaversion.api.data.MappingDataBase;
@@ -50,6 +55,8 @@
5055
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
5156
import com.viaversion.viaversion.rewriter.TagRewriter;
5257
import com.viaversion.viaversion.rewriter.text.NBTComponentRewriter;
58+
import java.util.function.Function;
59+
import org.checkerframework.checker.nullness.qual.Nullable;
5360

5461
import static com.viaversion.viaversion.util.ProtocolUtil.packetTypeMap;
5562

@@ -71,6 +78,25 @@ public Protocol1_21_9To1_21_11() {
7178
protected void registerPackets() {
7279
super.registerPackets();
7380

81+
registryDataRewriter.addHandler("dimension_type", (key, tag) -> {
82+
final ByteTag trueTag = new ByteTag((byte) 1);
83+
final CompoundTag attributes = new CompoundTag();
84+
tag.put("attributes", attributes);
85+
moveAttribute(tag, attributes, "cloud_height", "visual/cloud_height", Function.identity(), null);
86+
moveAttribute(tag, attributes, "has_raids", "gameplay/can_start_raid", Function.identity(), trueTag);
87+
moveAttribute(tag, attributes, "piglin_safe", "gameplay/piglins_zombify", attributeTag -> ((NumberTag) attributeTag).asBoolean() ? ByteTag.ZERO : trueTag, ByteTag.ZERO);
88+
moveAttribute(tag, attributes, "respawn_anchor_works", "gameplay/respawn_anchor_works", Function.identity(), trueTag);
89+
moveAttribute(tag, attributes, "ultrawarm", "gameplay/fast_lava", Function.identity(), ByteTag.ZERO);
90+
moveAttribute(tag, attributes, "ultrawarm", "gameplay/water_evaporates", Function.identity(), ByteTag.ZERO);
91+
});
92+
registryDataRewriter.addHandler("worldgen/biome", (key, tag) -> {
93+
final CompoundTag effects = tag.getCompoundTag("effects");
94+
final CompoundTag attributes = new CompoundTag();
95+
tag.put("attributes", attributes);
96+
moveAttribute(effects, attributes, "sky_color", "visual/sky_color", Function.identity(), new IntTag(0));
97+
moveAttribute(effects, attributes, "water_fog_color", "visual/water_fog_color", Function.identity(), new IntTag(-16448205));
98+
moveAttribute(effects, attributes, "fog_color", "visual/fog_color", Function.identity(), new IntTag(0));
99+
});
74100
registerClientbound(ClientboundConfigurationPackets1_21_9.REGISTRY_DATA, registryDataRewriter::handle);
75101

76102
tagRewriter.registerGeneric(ClientboundPackets1_21_9.UPDATE_TAGS);
@@ -149,6 +175,19 @@ protected void onMappingDataLoaded() {
149175
super.onMappingDataLoaded();
150176
}
151177

178+
private void moveAttribute(
179+
final CompoundTag baseTag, final CompoundTag attributes,
180+
final String key, final String mappedKey,
181+
final Function<Tag, Tag> tagMapper, @Nullable final Tag defaultTag
182+
) {
183+
final Tag attributeTag = baseTag.get(key);
184+
if (attributeTag != null) {
185+
attributes.put(mappedKey, tagMapper.apply(attributeTag));
186+
} else if (defaultTag != null) {
187+
attributes.put(mappedKey, defaultTag);
188+
}
189+
}
190+
152191
@Override
153192
public void init(final UserConnection connection) {
154193
addEntityTracker(connection, new EntityTrackerBase(connection, EntityTypes1_21_11.PLAYER));

common/src/main/java/com/viaversion/viaversion/protocols/v1_21_9to1_21_11/rewriter/EntityPacketRewriter1_21_11.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@
1919

2020
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
2121
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_21_11;
22+
import com.viaversion.viaversion.api.minecraft.entitydata.EntityData;
2223
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_21_9;
23-
import com.viaversion.viaversion.protocols.v1_21_7to1_21_9.packet.ClientboundConfigurationPackets1_21_9;
2424
import com.viaversion.viaversion.protocols.v1_21_7to1_21_9.packet.ClientboundPacket1_21_9;
2525
import com.viaversion.viaversion.protocols.v1_21_7to1_21_9.packet.ClientboundPackets1_21_9;
2626
import com.viaversion.viaversion.protocols.v1_21_9to1_21_11.Protocol1_21_9To1_21_11;
2727
import com.viaversion.viaversion.protocols.v1_21_9to1_21_11.storage.GameTimeStorage;
2828
import com.viaversion.viaversion.rewriter.EntityRewriter;
29-
import com.viaversion.viaversion.rewriter.RegistryDataRewriter;
29+
import com.viaversion.viaversion.rewriter.entitydata.EntityDataHandlerEvent;
3030

3131
public final class EntityPacketRewriter1_21_11 extends EntityRewriter<ClientboundPacket1_21_9, Protocol1_21_9To1_21_11> {
3232

@@ -59,11 +59,8 @@ protected void registerRewrites() {
5959
entityDataTypes.optionalComponentType
6060
);
6161

62-
filter().type(EntityTypes1_21_11.WOLF).index(20).handler((event, data) -> {
63-
final long currentGameTime = event.user().get(GameTimeStorage.class).gameTime();
64-
final int remainingAngerTime = data.value();
65-
data.setTypeAndValue(entityDataTypes.longType, currentGameTime + remainingAngerTime);
66-
});
62+
filter().type(EntityTypes1_21_11.WOLF).index(20).handler(this::relativeToAbsoluteTicks);
63+
filter().type(EntityTypes1_21_11.BEE).index(18).handler(this::relativeToAbsoluteTicks);
6764
}
6865

6966
@Override
@@ -75,4 +72,10 @@ public void onMappingDataLoaded() {
7572
public EntityType typeFromId(final int type) {
7673
return EntityTypes1_21_11.getTypeFromId(type);
7774
}
75+
76+
private void relativeToAbsoluteTicks(final EntityDataHandlerEvent event, final EntityData data) {
77+
final long currentGameTime = event.user().get(GameTimeStorage.class).gameTime();
78+
final int remainingAngerTime = data.value();
79+
data.setTypeAndValue(protocol.mappedTypes().entityDataTypes().longType, currentGameTime + remainingAngerTime);
80+
}
7881
}

0 commit comments

Comments
 (0)