Skip to content

Commit bc7f360

Browse files
committed
Track gamemode in 1.20.5 protocol
1 parent 95d53b7 commit bc7f360

3 files changed

Lines changed: 19 additions & 8 deletions

File tree

common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/rewriter/EntityPacketRewriter1_20_5.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.storage.SecureChatStorage;
3131
import com.viaversion.viaversion.api.connection.UserConnection;
3232
import com.viaversion.viaversion.api.data.entity.DimensionData;
33+
import com.viaversion.viaversion.api.minecraft.GameMode;
3334
import com.viaversion.viaversion.api.minecraft.Particle;
3435
import com.viaversion.viaversion.api.minecraft.RegistryEntry;
3536
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
@@ -208,7 +209,10 @@ public void register() {
208209
});
209210
map(Types.STRING); // World
210211
map(Types.LONG); // Seed
211-
map(Types.BYTE); // Gamemode
212+
handler(wrapper -> {
213+
final byte gamemode = wrapper.passthrough(Types.BYTE);
214+
tracker(wrapper.user()).setInstaBuild(gamemode == GameMode.CREATIVE.id());
215+
});
212216
map(Types.BYTE); // Previous gamemode
213217
map(Types.BOOLEAN); // Debug
214218
map(Types.BOOLEAN); // Flat
@@ -234,6 +238,11 @@ public void register() {
234238
});
235239
map(Types.STRING); // World
236240
handler(worldDataTrackerHandlerByKey()); // Tracks world height and name for chunk data and entity (un)tracking
241+
map(Types.LONG); // Seed
242+
handler(wrapper -> {
243+
final byte gamemode = wrapper.passthrough(Types.BYTE);
244+
tracker(wrapper.user()).setInstaBuild(gamemode == GameMode.CREATIVE.id());
245+
});
237246
}
238247
});
239248

common/src/main/java/com/viaversion/viabackwards/protocol/v1_21_2to1_21/rewriter/BlockItemPacketRewriter1_21_2.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@
6868
import com.viaversion.viaversion.util.Key;
6969
import com.viaversion.viaversion.util.Limit;
7070
import com.viaversion.viaversion.util.Unit;
71+
import java.util.ArrayList;
72+
import java.util.List;
7173

7274
import static com.viaversion.viaversion.protocols.v1_21to1_21_2.rewriter.BlockItemPacketRewriter1_21_2.downgradeItemData;
7375
import static com.viaversion.viaversion.protocols.v1_21to1_21_2.rewriter.BlockItemPacketRewriter1_21_2.updateItemData;
@@ -575,15 +577,15 @@ private Consumable1_21_2.ConsumeEffect<?> convertConsumableEffect(final Compound
575577
final String type = tag.getString("type");
576578
if ("apply_effects".equals(type)) {
577579
final ListTag<CompoundTag> effects = tag.getListTag("effects", CompoundTag.class);
578-
final PotionEffect[] potionEffects = new PotionEffect[effects.size()];
580+
final List<PotionEffect> potionEffects = new ArrayList<>();
579581
for (int i = 0; i < effects.size(); i++) {
580582
final CompoundTag effectTag = effects.get(i);
581583
final int effect = effectTag.getInt("effect");
582584
final PotionEffectData data = convertPotionEffectData(effectTag);
583-
potionEffects[i] = new PotionEffect(effect, data);
585+
potionEffects.add(new PotionEffect(effect, data));
584586
}
585587
final float probability = tag.getFloat("probability");
586-
return new Consumable1_21_2.ConsumeEffect<>(id, Consumable1_21_2.ApplyStatusEffects.TYPE, new Consumable1_21_2.ApplyStatusEffects(potionEffects, probability));
588+
return new Consumable1_21_2.ConsumeEffect<>(id, Consumable1_21_2.ApplyStatusEffects.TYPE, new Consumable1_21_2.ApplyStatusEffects(potionEffects.toArray(PotionEffect[]::new), probability));
587589
} else if ("remove_effects".equals(type)) {
588590
final HolderSet set = restoreHolderSet(tag, "remove_effects");
589591
return new Consumable1_21_2.ConsumeEffect<>(id, Types.HOLDER_SET, set);
@@ -671,11 +673,11 @@ private void restoreInconvertibleData(final Item item) {
671673

672674
final ListTag<CompoundTag> deathProtection = backupTag.getListTag("death_protection", CompoundTag.class);
673675
if (deathProtection != null) {
674-
final Consumable1_21_2.ConsumeEffect<?>[] effects = new Consumable1_21_2.ConsumeEffect[deathProtection.size()];
676+
final List<Consumable1_21_2.ConsumeEffect<?>> effects = new ArrayList<>();
675677
for (int i = 0; i < deathProtection.size(); i++) {
676-
effects[i] = convertConsumableEffect(deathProtection.get(i));
678+
effects.add(convertConsumableEffect(deathProtection.get(i)));
677679
}
678-
data.set(StructuredDataKey.DEATH_PROTECTION, new DeathProtection(effects));
680+
data.set(StructuredDataKey.DEATH_PROTECTION, new DeathProtection(effects.toArray(Consumable1_21_2.ConsumeEffect[]::new)));
679681
}
680682

681683
removeCustomTag(data, customData);

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
projectVersion=5.9.1
1+
projectVersion=5.9.2-SNAPSHOT
22

33
# Smile emoji (note that modrinth may not have added the version on release yet)
44
mcVersions=26.1.2, 26.1.1, 26.1, 1.21.11, 1.21.10, 1.21.9, 1.21.8, 1.21.7, 1.21.6, 1.21.5, 1.21.4, 1.21.3, 1.21.2, 1.21.1, 1.21, 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

0 commit comments

Comments
 (0)