From 9f46fe9270cbdede449ad50de7946da07ad06c46 Mon Sep 17 00:00:00 2001 From: Sollace Date: Sat, 26 Mar 2022 21:34:15 +0200 Subject: [PATCH] 1.18-pre -> 1.18.2 --- gradle.properties | 14 ++++---- .../com/minelittlepony/unicopia/UTags.java | 36 +++++++++---------- .../unicopia/WorldTribeManager.java | 11 +++--- .../ability/ChangelingDisguiseAbility.java | 4 +-- .../ability/EarthPonyStompAbility.java | 2 +- .../magic/spell/effect/CatapultSpell.java | 5 ++- .../spell/effect/TransformationSpell.java | 14 ++++---- .../unicopia/block/state/BlockStateMap.java | 4 +-- .../unicopia/block/state/StateMapping.java | 8 +++-- .../unicopia/client/KeyBindingsHandler.java | 2 +- .../client/gui/DismissSpellScreen.java | 2 +- .../client/gui/TribeSelectionScreen.java | 2 +- .../unicopia/client/gui/UHud.java | 4 +-- .../AbstractGeometryBasedParticle.java | 10 +++--- .../client/particle/MagicParticle.java | 8 ++--- .../particle/OrientedBillboardParticle.java | 2 +- .../client/particle/RainbowTrailParticle.java | 2 +- .../client/particle/RunesParticle.java | 16 ++++----- .../client/particle/SphereParticle.java | 22 ++++++------ .../unicopia/entity/CastSpellEntity.java | 2 +- .../unicopia/entity/Creature.java | 4 +-- .../unicopia/entity/DynamicLightSource.java | 4 ++- .../unicopia/entity/FairyEntity.java | 6 ---- .../unicopia/entity/LightEmittingEntity.java | 6 ---- .../unicopia/entity/UTradeOffers.java | 22 +++++++----- .../behaviour/FallingBlockBehaviour.java | 7 ++-- .../unicopia/entity/player/Pony.java | 4 +-- .../unicopia/item/ZapAppleItem.java | 17 +++++---- .../unicopia/item/toxin/Toxic.java | 9 ++--- .../unicopia/mixin/MixinBlockItem.java | 2 +- .../mixin/MixinFallingBlockEntity.java | 16 +++++++++ .../unicopia/mixin/MixinItem.java | 6 ++++ .../unicopia/mixin/MixinItems.java | 3 ++ .../projectile/MagicProjectileEntity.java | 2 +- .../unicopia/util/ItemTrace.java | 13 +++++++ .../unicopia/util/Registries.java | 16 ++++++++- src/main/resources/unicopia.mixin.json | 1 + 37 files changed, 187 insertions(+), 121 deletions(-) create mode 100644 src/main/java/com/minelittlepony/unicopia/mixin/MixinFallingBlockEntity.java create mode 100644 src/main/java/com/minelittlepony/unicopia/util/ItemTrace.java diff --git a/gradle.properties b/gradle.properties index 7c77e927..545a2f36 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,11 +2,11 @@ org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false # Fabric Properties - # check these on https://modmuss50.me/fabric.html - minecraft_version=1.18-pre8 - yarn_mappings=1.18-pre8+build.2 - loader_version=0.12.5 - fabric_version=0.43.0+1.18 + # check these on https://fabricmc.net/develop + minecraft_version=1.18.2 + yarn_mappings=1.18.2+build.1 + loader_version=0.13.3 + fabric_version=0.47.8+1.18.2 # Mod Properties group=com.minelittlepony @@ -15,6 +15,6 @@ org.gradle.daemon=false description=Magical Abilities for Mine Little Pony! # Dependencies - modmenu_version=2.0.0-beta.7 - minelp_version=4.4.1 + modmenu_version=3.1.0 + minelp_version=4.4.4 kirin_version=1.10.0 diff --git a/src/main/java/com/minelittlepony/unicopia/UTags.java b/src/main/java/com/minelittlepony/unicopia/UTags.java index ce9a929c..e67c57fd 100644 --- a/src/main/java/com/minelittlepony/unicopia/UTags.java +++ b/src/main/java/com/minelittlepony/unicopia/UTags.java @@ -2,41 +2,41 @@ package com.minelittlepony.unicopia; import com.minelittlepony.unicopia.item.toxin.Toxics; -import net.fabricmc.fabric.api.tag.TagFactory; import net.minecraft.block.Block; import net.minecraft.entity.EntityType; import net.minecraft.item.Item; -import net.minecraft.tag.Tag; +import net.minecraft.tag.TagKey; import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; public interface UTags { - Tag APPLES = item("apples"); - Tag FRESH_APPLES = item("fresh_apples"); + TagKey APPLES = item("apples"); + TagKey FRESH_APPLES = item("fresh_apples"); - Tag FALLS_SLOWLY = item("falls_slowly"); + TagKey FALLS_SLOWLY = item("falls_slowly"); - Tag MAGIC_FEATHERS = item("magic_feathers"); + TagKey MAGIC_FEATHERS = item("magic_feathers"); - Tag SHADES = item("shades"); + TagKey SHADES = item("shades"); - Tag FRAGILE = block("fragile"); - Tag INTERESTING = block("interesting"); + TagKey FRAGILE = block("fragile"); + TagKey INTERESTING = block("interesting"); - Tag CRYSTAL_HEART_BASE = block("crystal_heart_base"); - Tag CRYSTAL_HEART_ORNAMENT = block("crystal_heart_ornament"); + TagKey CRYSTAL_HEART_BASE = block("crystal_heart_base"); + TagKey CRYSTAL_HEART_ORNAMENT = block("crystal_heart_ornament"); - Tag> TRANSFORMABLE_ENTITIES = entity("transformable"); + TagKey> TRANSFORMABLE_ENTITIES = entity("transformable"); - static Tag item(String name) { - return TagFactory.ITEM.create(new Identifier("unicopia", name)); + static TagKey item(String name) { + return TagKey.of(Registry.ITEM_KEY, new Identifier("unicopia", name)); } - static Tag block(String name) { - return TagFactory.BLOCK.create(new Identifier("unicopia", name)); + static TagKey block(String name) { + return TagKey.of(Registry.BLOCK_KEY, new Identifier("unicopia", name)); } - static Tag> entity(String name) { - return TagFactory.ENTITY_TYPE.create(new Identifier("unicopia", name)); + static TagKey> entity(String name) { + return TagKey.of(Registry.ENTITY_TYPE_KEY, new Identifier("unicopia", name)); } static void bootstrap() { diff --git a/src/main/java/com/minelittlepony/unicopia/WorldTribeManager.java b/src/main/java/com/minelittlepony/unicopia/WorldTribeManager.java index add1afe4..ba1cdb10 100644 --- a/src/main/java/com/minelittlepony/unicopia/WorldTribeManager.java +++ b/src/main/java/com/minelittlepony/unicopia/WorldTribeManager.java @@ -2,6 +2,7 @@ package com.minelittlepony.unicopia; import net.minecraft.nbt.NbtCompound; import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.registry.RegistryEntry; import net.minecraft.world.PersistentState; import net.minecraft.world.dimension.DimensionType; @@ -29,12 +30,14 @@ public class WorldTribeManager extends PersistentState { return tag; } - @SuppressWarnings("deprecation") - public static String nameFor(DimensionType dimension) { - return "unicopia:tribes" + dimension.getSuffix(); + public static String nameFor(RegistryEntry dimension) { + if (dimension.matchesKey(DimensionType.THE_END_REGISTRY_KEY)) { + return "unicopia:tribes_end"; + } + return "unicopia:tribes"; } public static WorldTribeManager forWorld(ServerWorld world) { - return world.getPersistentStateManager().getOrCreate(WorldTribeManager::new, WorldTribeManager::new, nameFor(world.getDimension())); + return world.getPersistentStateManager().getOrCreate(WorldTribeManager::new, WorldTribeManager::new, nameFor(world.method_40134())); } } diff --git a/src/main/java/com/minelittlepony/unicopia/ability/ChangelingDisguiseAbility.java b/src/main/java/com/minelittlepony/unicopia/ability/ChangelingDisguiseAbility.java index fcd189ba..8d13248d 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/ChangelingDisguiseAbility.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/ChangelingDisguiseAbility.java @@ -10,10 +10,10 @@ import com.minelittlepony.unicopia.ability.magic.spell.AbstractDisguiseSpell; import com.minelittlepony.unicopia.ability.magic.spell.effect.SpellType; import com.minelittlepony.unicopia.entity.behaviour.EntityAppearance; import com.minelittlepony.unicopia.entity.player.Pony; +import com.minelittlepony.unicopia.mixin.MixinFallingBlockEntity; import com.minelittlepony.unicopia.particle.UParticles; import com.minelittlepony.unicopia.util.RayTraceHelper; import net.minecraft.entity.Entity; -import net.minecraft.entity.FallingBlockEntity; import net.minecraft.entity.LightningEntity; import net.minecraft.entity.decoration.AbstractDecorationEntity; import net.minecraft.entity.player.PlayerEntity; @@ -53,7 +53,7 @@ public class ChangelingDisguiseAbility extends ChangelingFeedAbility { .orElse(e) : e; }).orElseGet(() -> trace.getBlockPos().map(pos -> { if (!iplayer.getWorld().isAir(pos)) { - return new FallingBlockEntity(player.getEntityWorld(), 0, 0, 0, iplayer.getWorld().getBlockState(pos)); + return MixinFallingBlockEntity.createInstance(player.getEntityWorld(), 0, 0, 0, iplayer.getWorld().getBlockState(pos)); } return null; }).orElse(null)); diff --git a/src/main/java/com/minelittlepony/unicopia/ability/EarthPonyStompAbility.java b/src/main/java/com/minelittlepony/unicopia/ability/EarthPonyStompAbility.java index 8ef2fce8..d22cb49e 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/EarthPonyStompAbility.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/EarthPonyStompAbility.java @@ -154,7 +154,7 @@ public class EarthPonyStompAbility implements Ability { public static void spawnEffectAround(Entity source, BlockPos center, double radius, double range) { BlockPos.iterate(center.add(-radius, -radius, -radius), center.add(radius, radius, radius)).forEach(i -> { - double dist = Math.sqrt(i.getSquaredDistance(source.getX(), source.getY(), source.getZ(), true)); + double dist = Math.sqrt(i.getSquaredDistance(source.getX(), source.getY(), source.getZ())); if (dist <= radius) { spawnEffect(source.world, i, dist, range); diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/effect/CatapultSpell.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/effect/CatapultSpell.java index 871bed50..d167b19b 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/effect/CatapultSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/effect/CatapultSpell.java @@ -10,6 +10,7 @@ import com.minelittlepony.unicopia.ability.magic.spell.ProjectileSpell; import com.minelittlepony.unicopia.ability.magic.spell.Situation; import com.minelittlepony.unicopia.ability.magic.spell.trait.SpellTraits; import com.minelittlepony.unicopia.ability.magic.spell.trait.Trait; +import com.minelittlepony.unicopia.mixin.MixinFallingBlockEntity; import com.minelittlepony.unicopia.projectile.MagicProjectileEntity; import com.minelittlepony.unicopia.util.RayTraceHelper; @@ -105,7 +106,7 @@ public class CatapultSpell extends AbstractSpell implements ProjectileSpell { } Vec3d pos = Vec3d.ofBottomCenter(bpos); - FallingBlockEntity e = new FallingBlockEntity(world, pos.x, pos.y, pos.z, world.getBlockState(bpos)); + FallingBlockEntity e = MixinFallingBlockEntity.createInstance(world, pos.x, pos.y, pos.z, world.getBlockState(bpos)); world.removeBlock(bpos, true); e.setOnGround(false); e.timeFalling = Integer.MIN_VALUE; @@ -115,5 +116,7 @@ public class CatapultSpell extends AbstractSpell implements ProjectileSpell { apply.accept(e); } world.spawnEntity(e); + + e.updateVelocity(HORIZONTAL_VARIANCE, pos); } } diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/effect/TransformationSpell.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/effect/TransformationSpell.java index 502ec7fb..8bf4e82d 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/effect/TransformationSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/effect/TransformationSpell.java @@ -1,10 +1,9 @@ package com.minelittlepony.unicopia.ability.magic.spell.effect; import java.util.ArrayList; -import java.util.HashSet; import java.util.Optional; -import java.util.Random; import java.util.Set; +import java.util.stream.Collectors; import com.minelittlepony.unicopia.USounds; import com.minelittlepony.unicopia.UTags; @@ -15,12 +14,15 @@ import com.minelittlepony.unicopia.ability.magic.spell.trait.SpellTraits; import com.minelittlepony.unicopia.entity.UEntities; import com.minelittlepony.unicopia.particle.ParticleUtils; import com.minelittlepony.unicopia.projectile.MagicProjectileEntity; +import com.minelittlepony.unicopia.util.Registries; + import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.SpawnGroup; import net.minecraft.entity.mob.MobEntity; import net.minecraft.particle.ParticleTypes; import net.minecraft.util.Util; +import net.minecraft.world.World; /** * Transforms whatever entity it strikes into a random other entity. @@ -40,7 +42,7 @@ public class TransformationSpell extends AbstractSpell implements ProjectileSpel if (projectile.world.isClient) { return; } - pickType(entity.getType(), entity.world.random).flatMap(type -> convert(entity, type)).ifPresentOrElse(e -> { + pickType(entity.getType(), entity.world).flatMap(type -> convert(entity, type)).ifPresentOrElse(e -> { entity.playSound(USounds.SPELL_TRANSFORM_TRANSMUTE_ENTITY, 1, 1); }, () -> { ParticleUtils.spawnParticles(ParticleTypes.SMOKE, entity, 20); @@ -62,8 +64,8 @@ public class TransformationSpell extends AbstractSpell implements ProjectileSpel } @SuppressWarnings("unchecked") - private Optional> pickType(EntityType except, Random random) { - Set> options = new HashSet<>(UTags.TRANSFORMABLE_ENTITIES.values()); + private Optional> pickType(EntityType except, World world) { + Set> options = Registries.valuesForTag(world, UTags.TRANSFORMABLE_ENTITIES).collect(Collectors.toSet()); if (except.getSpawnGroup() == SpawnGroup.MONSTER) { options.removeIf(t -> t.getSpawnGroup() == SpawnGroup.MONSTER); } else { @@ -72,6 +74,6 @@ public class TransformationSpell extends AbstractSpell implements ProjectileSpel if (options.size() <= 1) { return options.stream().findFirst().map(t -> (EntityType)t); } - return Optional.ofNullable((EntityType)Util.getRandom(new ArrayList<>(options), random)); + return Optional.ofNullable((EntityType)Util.getRandom(new ArrayList<>(options), world.random)); } } diff --git a/src/main/java/com/minelittlepony/unicopia/block/state/BlockStateMap.java b/src/main/java/com/minelittlepony/unicopia/block/state/BlockStateMap.java index a6ac3334..fec1ff86 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/state/BlockStateMap.java +++ b/src/main/java/com/minelittlepony/unicopia/block/state/BlockStateMap.java @@ -11,7 +11,7 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Material; import net.minecraft.state.property.Property; -import net.minecraft.tag.Tag; +import net.minecraft.tag.TagKey; import net.minecraft.world.World; /** @@ -66,7 +66,7 @@ class BlockStateMap implements BlockStateConverter { return add(StateMapping.replaceBlock(from, to)); } - public Builder replaceBlock(Tag from, Block to) { + public Builder replaceBlock(TagKey from, Block to) { return add(StateMapping.replaceBlock(from, to)); } diff --git a/src/main/java/com/minelittlepony/unicopia/block/state/StateMapping.java b/src/main/java/com/minelittlepony/unicopia/block/state/StateMapping.java index a154bef0..3440ede1 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/state/StateMapping.java +++ b/src/main/java/com/minelittlepony/unicopia/block/state/StateMapping.java @@ -6,13 +6,15 @@ import java.util.function.Predicate; import org.jetbrains.annotations.NotNull; +import com.minelittlepony.unicopia.util.Registries; + import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.Material; import net.minecraft.state.property.IntProperty; import net.minecraft.state.property.Property; -import net.minecraft.tag.Tag; +import net.minecraft.tag.TagKey; import net.minecraft.world.World; interface StateMapping extends Predicate, BiFunction { @@ -49,13 +51,13 @@ interface StateMapping extends Predicate, BiFunction Blocks.AIR.getDefaultState()); } - static StateMapping replaceBlock(Tag tag, Block to) { + static StateMapping replaceBlock(TagKey tag, Block to) { return build( s -> s.isIn(tag), (w, s) -> to.getDefaultState(), s -> build( p -> p.isOf(to), - (w, p) -> tag.getRandom(w.random).getDefaultState() + (w, p) -> Registries.entriesForTag(w, tag).getRandom(w.random).get().value().getDefaultState() ) ); } diff --git a/src/main/java/com/minelittlepony/unicopia/client/KeyBindingsHandler.java b/src/main/java/com/minelittlepony/unicopia/client/KeyBindingsHandler.java index 7d980ee7..3744f599 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/KeyBindingsHandler.java +++ b/src/main/java/com/minelittlepony/unicopia/client/KeyBindingsHandler.java @@ -78,7 +78,7 @@ public class KeyBindingsHandler { } else { for (Binding i : keys.keySet()) { AbilitySlot slot = keys.get(i); - if (slot == AbilitySlot.PRIMARY && client.options.keySneak.isPressed() && abilities.isFilled(AbilitySlot.PASSIVE)) { + if (slot == AbilitySlot.PRIMARY && client.options.sneakKey.isPressed() && abilities.isFilled(AbilitySlot.PASSIVE)) { slot = AbilitySlot.PASSIVE; } if (slot == AbilitySlot.PRIMARY && !abilities.isFilled(slot)) { diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/DismissSpellScreen.java b/src/main/java/com/minelittlepony/unicopia/client/gui/DismissSpellScreen.java index 0f5d773e..dd175312 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/DismissSpellScreen.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/DismissSpellScreen.java @@ -78,7 +78,7 @@ public class DismissSpellScreen extends GameGui { } @Override - public boolean isPauseScreen() { + public boolean shouldPause() { return false; } diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/TribeSelectionScreen.java b/src/main/java/com/minelittlepony/unicopia/client/gui/TribeSelectionScreen.java index 1899e673..b0c66c8d 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/TribeSelectionScreen.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/TribeSelectionScreen.java @@ -96,7 +96,7 @@ public class TribeSelectionScreen extends GameGui implements HidesHud { @Override public void finish() { finished = true; - onClose(); + close(); } @Override diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java b/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java index 6da29bb8..672ee94f 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java @@ -113,7 +113,7 @@ public class UHud extends DrawableHelper { RenderSystem.enableBlend(); RenderSystem.setShaderTexture(0, HUD_TEXTURE); - boolean swap = client.options.keySneak.isPressed(); + boolean swap = client.options.sneakKey.isPressed(); slots.forEach(slot -> slot.renderBackground(matrices, abilities, swap, tickDelta)); slots.forEach(slot -> slot.renderLabel(matrices, abilities, tickDelta)); @@ -271,7 +271,7 @@ public class UHud extends DrawableHelper { void renderAbilityIcon(MatrixStack matrices, AbilityDispatcher.Stat stat, int x, int y, int u, int v, int frameWidth, int frameHeight) { stat.getAbility(KeyBindingsHandler.INSTANCE.page).ifPresent(ability -> { - RenderSystem.setShaderTexture(0, ability.getIcon(Pony.of(client.player), client.options.keySneak.isPressed())); + RenderSystem.setShaderTexture(0, ability.getIcon(Pony.of(client.player), client.options.sneakKey.isPressed())); drawTexture(matrices, x, y, 0, 0, frameWidth, frameHeight, u, v); RenderSystem.setShaderTexture(0, HUD_TEXTURE); }); diff --git a/src/main/java/com/minelittlepony/unicopia/client/particle/AbstractGeometryBasedParticle.java b/src/main/java/com/minelittlepony/unicopia/client/particle/AbstractGeometryBasedParticle.java index 1c328ea8..dd1bff14 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/particle/AbstractGeometryBasedParticle.java +++ b/src/main/java/com/minelittlepony/unicopia/client/particle/AbstractGeometryBasedParticle.java @@ -27,10 +27,10 @@ public abstract class AbstractGeometryBasedParticle extends Particle { int light = getBrightness(tickDelta); buffer.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE_COLOR_LIGHT); - buffer.vertex(corners[0].getX(), corners[0].getY(), corners[0].getZ()).texture(0, 0).color(colorRed, colorGreen, colorBlue, alpha).light(light).next(); - buffer.vertex(corners[1].getX(), corners[1].getY(), corners[1].getZ()).texture(1, 0).color(colorRed, colorGreen, colorBlue, alpha).light(light).next(); - buffer.vertex(corners[2].getX(), corners[2].getY(), corners[2].getZ()).texture(1, 1).color(colorRed, colorGreen, colorBlue, alpha).light(light).next(); - buffer.vertex(corners[3].getX(), corners[3].getY(), corners[3].getZ()).texture(0, 1).color(colorRed, colorGreen, colorBlue, alpha).light(light).next(); + buffer.vertex(corners[0].getX(), corners[0].getY(), corners[0].getZ()).texture(0, 0).color(red, green, blue, alpha).light(light).next(); + buffer.vertex(corners[1].getX(), corners[1].getY(), corners[1].getZ()).texture(1, 0).color(red, green, blue, alpha).light(light).next(); + buffer.vertex(corners[2].getX(), corners[2].getY(), corners[2].getZ()).texture(1, 1).color(red, green, blue, alpha).light(light).next(); + buffer.vertex(corners[3].getX(), corners[3].getY(), corners[3].getZ()).texture(0, 1).color(red, green, blue, alpha).light(light).next(); te.draw(); } @@ -39,7 +39,7 @@ public abstract class AbstractGeometryBasedParticle extends Particle { int light = getBrightness(tickDelta); for (Vec3f corner : corners) { - buffer.vertex(corner.getX(), corner.getY(), corner.getZ()).color(colorRed, colorGreen, colorBlue, alpha).light(light).next(); + buffer.vertex(corner.getX(), corner.getY(), corner.getZ()).color(red, green, blue, alpha).light(light).next(); } } diff --git a/src/main/java/com/minelittlepony/unicopia/client/particle/MagicParticle.java b/src/main/java/com/minelittlepony/unicopia/client/particle/MagicParticle.java index 612b6ee4..d0c268e0 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/particle/MagicParticle.java +++ b/src/main/java/com/minelittlepony/unicopia/client/particle/MagicParticle.java @@ -27,10 +27,10 @@ public class MagicParticle extends SpriteBillboardParticle { scale = random.nextFloat() * 0.12F; maxAge = (int)(Math.random() * 10) + 20; - colorRed = color.getX(); - colorGreen = color.getY(); - colorBlue = color.getZ(); - colorAlpha = alpha; + red = color.getX(); + green = color.getY(); + blue = color.getZ(); + this.alpha = alpha; } public MagicParticle(MagicParticleEffect effect, SpriteProvider provider, ClientWorld w, double x, double y, double z, double vX, double vY, double vZ) { diff --git a/src/main/java/com/minelittlepony/unicopia/client/particle/OrientedBillboardParticle.java b/src/main/java/com/minelittlepony/unicopia/client/particle/OrientedBillboardParticle.java index 8d708bf6..ebe972ce 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/particle/OrientedBillboardParticle.java +++ b/src/main/java/com/minelittlepony/unicopia/client/particle/OrientedBillboardParticle.java @@ -50,7 +50,7 @@ public abstract class OrientedBillboardParticle extends AbstractBillboardParticl corner.add(x, y, z); } - float alpha = colorAlpha * (1 - ((float)age / maxAge)); + float alpha = this.alpha * (1 - ((float)age / maxAge)); renderQuad(te, buffer, corners, alpha, tickDelta); } diff --git a/src/main/java/com/minelittlepony/unicopia/client/particle/RainbowTrailParticle.java b/src/main/java/com/minelittlepony/unicopia/client/particle/RainbowTrailParticle.java index e22fa95d..9e5ec5de 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/particle/RainbowTrailParticle.java +++ b/src/main/java/com/minelittlepony/unicopia/client/particle/RainbowTrailParticle.java @@ -120,7 +120,7 @@ public class RainbowTrailParticle extends AbstractBillboardParticle implements A } float getAlpha() { - return colorAlpha * (1 - ((float)age / maxAge)); + return alpha * (1 - ((float)age / maxAge)); } boolean tick() { diff --git a/src/main/java/com/minelittlepony/unicopia/client/particle/RunesParticle.java b/src/main/java/com/minelittlepony/unicopia/client/particle/RunesParticle.java index 1bd7dfb7..e941785e 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/particle/RunesParticle.java +++ b/src/main/java/com/minelittlepony/unicopia/client/particle/RunesParticle.java @@ -43,9 +43,9 @@ public class RunesParticle extends OrientedBillboardParticle implements Attachme super(effect, world, x, y, z, velocityX, velocityY, velocityZ); setMaxAge(70); - colorRed = world.random.nextFloat(); - colorGreen = world.random.nextFloat(); - colorBlue = world.random.nextFloat(); + red = world.random.nextFloat(); + green = world.random.nextFloat(); + blue = world.random.nextFloat(); } @Override @@ -72,9 +72,9 @@ public class RunesParticle extends OrientedBillboardParticle implements Attachme public void setAttribute(int key, Object value) { if (key == 1) { int tint = (int)value; - colorRed = Color.r(tint); - colorGreen = Color.g(tint); - colorBlue = Color.b(tint); + red = Color.r(tint); + green = Color.g(tint); + blue = Color.b(tint); } } @Override @@ -100,13 +100,13 @@ public class RunesParticle extends OrientedBillboardParticle implements Attachme @Override protected void renderQuads(Tessellator te, BufferBuilder buffer, float x, float y, float z, float tickDelta) { - float alpha = colorAlpha * getAlphaScale(); + float alpha = this.alpha * getAlphaScale(); float angle = MathHelper.lerp(tickDelta, prevRotationAngle, rotationAngle); for (int i = 0; i < TEXTURES.length; i++) { RenderSystem.setShaderTexture(0, TEXTURES[i]); - RenderSystem.setShaderColor(colorRed, colorGreen, colorBlue, alpha); + RenderSystem.setShaderColor(red, green, blue, alpha); Vec3f[] corners = new Vec3f[]{ new Vec3f(-1, -1, 0), diff --git a/src/main/java/com/minelittlepony/unicopia/client/particle/SphereParticle.java b/src/main/java/com/minelittlepony/unicopia/client/particle/SphereParticle.java index 6defe95d..3f720513 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/particle/SphereParticle.java +++ b/src/main/java/com/minelittlepony/unicopia/client/particle/SphereParticle.java @@ -49,10 +49,10 @@ public class SphereParticle extends Particle implements Attachment { super(w, x, y, z); this.parameters = parameters; this.radius = parameters.getRadius(); - this.colorRed = parameters.getColor().getX() / 255F; - this.colorGreen = parameters.getColor().getY() / 255F; - this.colorBlue = parameters.getColor().getZ() / 255F; - this.colorAlpha = parameters.getAlpha(); + this.red = parameters.getColor().getX() / 255F; + this.green = parameters.getColor().getY() / 255F; + this.blue = parameters.getColor().getZ() / 255F; + this.alpha = parameters.getAlpha(); setMaxAge(10); } @@ -82,12 +82,12 @@ public class SphereParticle extends Particle implements Attachment { } if (key == 1) { int tint = (int)value; - colorRed = Color.r(tint); - colorGreen = Color.g(tint); - colorBlue = Color.b(tint); + red = Color.r(tint); + green = Color.g(tint); + blue = Color.b(tint); } if (key == 2) { - colorAlpha = (float)value; + alpha = (float)value; } } @@ -121,12 +121,12 @@ public class SphereParticle extends Particle implements Attachment { @Override public void buildGeometry(VertexConsumer vertexConsumer, Camera camera, float tickDelta) { - if (colorAlpha <= 0 || radius <= 0) { + if (alpha <= 0 || radius <= 0) { return; } - float[] color = ColorHelper.changeSaturation(colorRed, colorGreen, colorBlue, 4); - RenderSystem.setShaderColor(color[0], color[1], color[2], colorAlpha / 3F); + float[] color = ColorHelper.changeSaturation(red, green, blue, 4); + RenderSystem.setShaderColor(color[0], color[1], color[2], alpha / 3F); VertexConsumerProvider.Immediate immediate = MinecraftClient.getInstance().getBufferBuilders().getEntityVertexConsumers(); VertexConsumer buffer = immediate.getBuffer(RenderLayers.getMagicNoColor()); diff --git a/src/main/java/com/minelittlepony/unicopia/entity/CastSpellEntity.java b/src/main/java/com/minelittlepony/unicopia/entity/CastSpellEntity.java index 9056aa02..f71d9fea 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/CastSpellEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/CastSpellEntity.java @@ -26,7 +26,7 @@ import net.minecraft.world.World; public class CastSpellEntity extends LightEmittingEntity implements Caster, WeaklyOwned { private static final TrackedData GRAVITY = DataTracker.registerData(CastSpellEntity.class, TrackedDataHandlerRegistry.FLOAT); - private static final TrackedData EFFECT = DataTracker.registerData(CastSpellEntity.class, TrackedDataHandlerRegistry.TAG_COMPOUND); + private static final TrackedData EFFECT = DataTracker.registerData(CastSpellEntity.class, TrackedDataHandlerRegistry.NBT_COMPOUND); private static final LevelStore LEVELS = Levelled.fixed(0); diff --git a/src/main/java/com/minelittlepony/unicopia/entity/Creature.java b/src/main/java/com/minelittlepony/unicopia/entity/Creature.java index 60f6f630..8a159ebd 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/Creature.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/Creature.java @@ -38,8 +38,8 @@ import net.minecraft.nbt.NbtElement; import net.minecraft.world.World; public class Creature extends Living implements WeaklyOwned { - private static final TrackedData EFFECT = DataTracker.registerData(LivingEntity.class, TrackedDataHandlerRegistry.TAG_COMPOUND); - private static final TrackedData MASTER = DataTracker.registerData(LivingEntity.class, TrackedDataHandlerRegistry.TAG_COMPOUND); + private static final TrackedData EFFECT = DataTracker.registerData(LivingEntity.class, TrackedDataHandlerRegistry.NBT_COMPOUND); + private static final TrackedData MASTER = DataTracker.registerData(LivingEntity.class, TrackedDataHandlerRegistry.NBT_COMPOUND); public static final TrackedData GRAVITY = DataTracker.registerData(LivingEntity.class, TrackedDataHandlerRegistry.FLOAT); private static final LevelStore LEVELS = Levelled.fixed(0); diff --git a/src/main/java/com/minelittlepony/unicopia/entity/DynamicLightSource.java b/src/main/java/com/minelittlepony/unicopia/entity/DynamicLightSource.java index fd2b3a31..6ce8ce7e 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/DynamicLightSource.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/DynamicLightSource.java @@ -6,7 +6,9 @@ import net.minecraft.entity.Entity; import net.minecraft.util.math.BlockPos; public interface DynamicLightSource { - int getLightLevel(); + default int getLightLevel() { + return 0; + } static final class LightEmitter { @Nullable diff --git a/src/main/java/com/minelittlepony/unicopia/entity/FairyEntity.java b/src/main/java/com/minelittlepony/unicopia/entity/FairyEntity.java index de8c3eee..6739b66a 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/FairyEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/FairyEntity.java @@ -209,12 +209,6 @@ public class FairyEntity extends PathAwareEntity implements DynamicLightSource, return false; } - @Override - public void setRemoved(RemovalReason reason) { - super.setRemoved(reason); - emitter.remove(); - } - @Override public void onRemoved() { super.onRemoved(); diff --git a/src/main/java/com/minelittlepony/unicopia/entity/LightEmittingEntity.java b/src/main/java/com/minelittlepony/unicopia/entity/LightEmittingEntity.java index f2b29f43..9646f370 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/LightEmittingEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/LightEmittingEntity.java @@ -17,12 +17,6 @@ public abstract class LightEmittingEntity extends Entity implements DynamicLight emitter.tick(); } - @Override - public void setRemoved(RemovalReason reason) { - super.setRemoved(reason); - emitter.remove(); - } - @Override public void onRemoved() { super.onRemoved(); diff --git a/src/main/java/com/minelittlepony/unicopia/entity/UTradeOffers.java b/src/main/java/com/minelittlepony/unicopia/entity/UTradeOffers.java index 5b7be521..8b52020f 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/UTradeOffers.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/UTradeOffers.java @@ -8,13 +8,15 @@ import com.minelittlepony.unicopia.UTags; import com.minelittlepony.unicopia.ability.magic.spell.effect.SpellType; import com.minelittlepony.unicopia.item.GemstoneItem; import com.minelittlepony.unicopia.item.UItems; +import com.minelittlepony.unicopia.util.Registries; + import net.fabricmc.fabric.api.object.builder.v1.trade.TradeOfferHelper; import net.minecraft.entity.Entity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.tag.ItemTags; -import net.minecraft.tag.Tag; +import net.minecraft.tag.TagKey; import net.minecraft.util.Util; import net.minecraft.village.TradeOffer; import net.minecraft.village.TradeOffers; @@ -36,7 +38,7 @@ public interface UTradeOffers { TradeOfferHelper.registerWanderingTraderOffers(1, factories -> { factories.add(buyTiered(UItems.GEMSTONE, 30, UItems.GOLDEN_FEATHER, 1, UItems.GOLDEN_WING, 1, 30, 2, 0.05F)); - factories.add((e, rng) -> new TradeOffer(new ItemStack(UItems.GEMSTONE, 3), GemstoneItem.enchant(UItems.GEMSTONE.getDefaultStack(), SpellType.REGISTRY.getRandom(rng)), 20, 1, 0.05F)); + factories.add((e, rng) -> new TradeOffer(new ItemStack(UItems.GEMSTONE, 3), GemstoneItem.enchant(UItems.GEMSTONE.getDefaultStack(), SpellType.REGISTRY.getRandom(rng).get().value()), 20, 1, 0.05F)); factories.add(buy(UItems.GEMSTONE, 20, UItems.HAY_FRIES, 5, 50, 3, 0.06F)); factories.add(buy(Items.WHEAT, 17, UItems.HAY_BURGER, 1, 10, 6, 0.08F)); factories.add(buy(ItemTags.SMALL_FLOWERS, 2, UItems.DAFFODIL_DAISY_SANDWICH, 1, 10, 6, 0.08F)); @@ -64,17 +66,21 @@ public interface UTradeOffers { return (e, rng) -> new TradeOffer(new ItemStack(item, count), new ItemStack(intermediate, intermediatCount), new ItemStack(returnItem, returnCount), maxUses, experience, priceChange); } - private static TradeOffers.Factory buy(Tag item, int count, Item returnItem, int returnCount, int maxUses, int experience, float priceChange) { - return (e, rng) -> new TradeOffer(new ItemStack(item.getRandom(rng), count), new ItemStack(returnItem, returnCount), maxUses, experience, priceChange); + private static TradeOffers.Factory buy(TagKey item, int count, Item returnItem, int returnCount, int maxUses, int experience, float priceChange) { + return (e, rng) -> new TradeOffer(new ItemStack(random(e, item, rng), count), new ItemStack(returnItem, returnCount), maxUses, experience, priceChange); } @SuppressWarnings("unused") - private static TradeOffers.Factory buy(Tag item, int count, Tag returnItem, int returnCount, int maxUses, int experience, float priceChange) { - return (e, rng) -> new TradeOffer(new ItemStack(item.getRandom(rng), count), new ItemStack(returnItem.getRandom(rng), returnCount), maxUses, experience, priceChange); + private static TradeOffers.Factory buy(TagKey item, int count, TagKey returnItem, int returnCount, int maxUses, int experience, float priceChange) { + return (e, rng) -> new TradeOffer(new ItemStack(random(e, item, rng), count), new ItemStack(random(e, returnItem, rng), returnCount), maxUses, experience, priceChange); } - private static TradeOffers.Factory buy(Item item, int count, Tag returnItem, int returnCount, int maxUses, int experience, float priceChange) { - return (e, rng) -> new TradeOffer(new ItemStack(item, count), new ItemStack(returnItem.getRandom(rng), returnCount), maxUses, experience, priceChange); + private static TradeOffers.Factory buy(Item item, int count, TagKey returnItem, int returnCount, int maxUses, int experience, float priceChange) { + return (e, rng) -> new TradeOffer(new ItemStack(item, count), new ItemStack(random(e, returnItem, rng), returnCount), maxUses, experience, priceChange); + } + + private static Item random(Entity e, TagKey item, Random rng) { + return Registries.entriesForTag(e.world, item).getRandom(rng).get().value(); } static class JarredItemTradeOfferFactory implements TradeOffers.Factory { diff --git a/src/main/java/com/minelittlepony/unicopia/entity/behaviour/FallingBlockBehaviour.java b/src/main/java/com/minelittlepony/unicopia/entity/behaviour/FallingBlockBehaviour.java index ba396c80..626a7714 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/behaviour/FallingBlockBehaviour.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/behaviour/FallingBlockBehaviour.java @@ -6,6 +6,7 @@ import java.util.Optional; import com.minelittlepony.unicopia.ability.magic.Caster; import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.mixin.MixinFallingBlock; +import com.minelittlepony.unicopia.mixin.MixinFallingBlockEntity; import com.minelittlepony.unicopia.util.Tickable; import net.minecraft.block.Block; @@ -71,9 +72,9 @@ public class FallingBlockBehaviour extends EntityBehaviour { BlockState lowerState = state.with(DoorBlock.HALF, DoubleBlockHalf.LOWER); BlockState upperState = state.with(DoorBlock.HALF, DoubleBlockHalf.UPPER); - context.attachExtraEntity(configure(new FallingBlockEntity(entity.world, entity.getX(), entity.getY(), entity.getZ(), upperState), block)); + context.attachExtraEntity(configure(MixinFallingBlockEntity.createInstance(entity.world, entity.getX(), entity.getY(), entity.getZ(), upperState), block)); - return configure(new FallingBlockEntity(entity.world, entity.getX(), entity.getY() + 1, entity.getZ(), lowerState), block); + return configure(MixinFallingBlockEntity.createInstance(entity.world, entity.getX(), entity.getY() + 1, entity.getZ(), lowerState), block); } if (block instanceof BlockEntityProvider) { @@ -91,7 +92,7 @@ public class FallingBlockBehaviour extends EntityBehaviour { boolean logged = entity.world.isWater(entity.getBlockPos()); if (state.get(Properties.WATERLOGGED) != logged) { - entity = new FallingBlockEntity(entity.world, entity.getX(), entity.getY(), entity.getZ(), state.with(Properties.WATERLOGGED, logged)); + entity = MixinFallingBlockEntity.createInstance(entity.world, entity.getX(), entity.getY(), entity.getZ(), state.with(Properties.WATERLOGGED, logged)); spell.getDisguise().setAppearance(entity); return; } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java b/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java index 362d47a4..f0c23a71 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java @@ -78,7 +78,7 @@ public class Pony extends Living implements Transmittable, Copieab static final TrackedData MANA = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.FLOAT); static final TrackedData XP = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.FLOAT); - private static final TrackedData EFFECT = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.TAG_COMPOUND); + private static final TrackedData EFFECT = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.NBT_COMPOUND); private final AbilityDispatcher powers = new AbilityDispatcher(this); private final PlayerPhysics gravity = new PlayerPhysics(this); @@ -323,7 +323,7 @@ public class Pony extends Living implements Transmittable, Copieab public boolean canHangAt(BlockPos pos) { BlockState state = getWorld().getBlockState(pos); - return state.hasSolidTopSurface(getWorld(), pos, getEntity(), Direction.DOWN); + return state.isSolidSurface(getWorld(), pos, getEntity(), Direction.DOWN); } private BlockPos getHangingPos() { diff --git a/src/main/java/com/minelittlepony/unicopia/item/ZapAppleItem.java b/src/main/java/com/minelittlepony/unicopia/item/ZapAppleItem.java index 0bbe158a..7857e7f9 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/ZapAppleItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/ZapAppleItem.java @@ -3,12 +3,16 @@ package com.minelittlepony.unicopia.item; import java.util.Optional; import com.minelittlepony.unicopia.UTags; +import com.minelittlepony.unicopia.Unicopia; import com.minelittlepony.unicopia.advancement.UCriteria; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.item.toxin.Toxicity; import com.minelittlepony.unicopia.particle.ParticleUtils; import com.minelittlepony.unicopia.particle.UParticles; import com.minelittlepony.unicopia.util.MagicalDamageSource; import com.minelittlepony.unicopia.util.RayTraceHelper; +import com.minelittlepony.unicopia.util.Registries; + import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.LightningEntity; @@ -107,12 +111,13 @@ public class ZapAppleItem extends AppleItem implements ChameleonItem { public void appendStacks(ItemGroup tab, DefaultedList items) { super.appendStacks(tab, items); if (isIn(tab)) { - UTags.APPLES.values().forEach(item -> { - if (item != this) { - ItemStack stack = new ItemStack(this); - stack.getOrCreateNbt().putString("appearance", Registry.ITEM.getId(item).toString()); - items.add(stack); - } + Unicopia.SIDE.getPony().map(Pony::getWorld) + .stream() + .flatMap(world -> Registries.valuesForTag(world, UTags.APPLES)) + .filter(a -> a != this).forEach(item -> { + ItemStack stack = new ItemStack(this); + stack.getOrCreateNbt().putString("appearance", Registry.ITEM.getId(item).toString()); + items.add(stack); }); } } diff --git a/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxic.java b/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxic.java index 6c2d0e08..f6c18ca2 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxic.java +++ b/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxic.java @@ -13,7 +13,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.FoodComponent; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.tag.Tag; +import net.minecraft.tag.TagKey; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.util.UseAction; @@ -27,9 +27,9 @@ public class Toxic { private final Ailment defaultAilment; private final Map ailments; - private final Tag tag; + private final TagKey tag; - Toxic(UseAction action, Optional component, Tag tag, Ailment defaultAilment, Map ailments) { + Toxic(UseAction action, Optional component, TagKey tag, Ailment defaultAilment, Map ailments) { this.action = action; this.component = component; this.tag = tag; @@ -37,8 +37,9 @@ public class Toxic { this.ailments = ailments; } + @SuppressWarnings("deprecation") public boolean matches(Item item) { - return tag.contains(item); + return item.getRegistryEntry().isIn(tag); } public Optional getFoodComponent() { diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/MixinBlockItem.java b/src/main/java/com/minelittlepony/unicopia/mixin/MixinBlockItem.java index e7c7d3cb..d1479413 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/MixinBlockItem.java +++ b/src/main/java/com/minelittlepony/unicopia/mixin/MixinBlockItem.java @@ -14,7 +14,7 @@ import net.minecraft.world.World; @Mixin(BlockItem.class) abstract class MixinBlockItem extends Item implements ToxicHolder { - public MixinBlockItem() {super(null); } + MixinBlockItem() {super(null); } @Override public UseAction getUseAction(ItemStack stack) { diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/MixinFallingBlockEntity.java b/src/main/java/com/minelittlepony/unicopia/mixin/MixinFallingBlockEntity.java new file mode 100644 index 00000000..59e0b5a9 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/mixin/MixinFallingBlockEntity.java @@ -0,0 +1,16 @@ +package com.minelittlepony.unicopia.mixin; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +import net.minecraft.block.BlockState; +import net.minecraft.entity.FallingBlockEntity; +import net.minecraft.world.World; + +@Mixin(FallingBlockEntity.class) +public interface MixinFallingBlockEntity { + @Invoker("") + static FallingBlockEntity createInstance(World world, double x, double y, double z, BlockState state) { + return null; + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/MixinItem.java b/src/main/java/com/minelittlepony/unicopia/mixin/MixinItem.java index 5aff2d31..fde1766d 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/MixinItem.java +++ b/src/main/java/com/minelittlepony/unicopia/mixin/MixinItem.java @@ -1,6 +1,11 @@ package com.minelittlepony.unicopia.mixin; +import java.io.OutputStream; +import java.io.PrintStream; +import java.io.StringWriter; import java.util.Optional; +import java.util.concurrent.CompletableFuture; +import java.util.stream.Stream; import org.jetbrains.annotations.Nullable; @@ -10,6 +15,7 @@ import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import com.minelittlepony.unicopia.item.toxin.Toxic; diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/MixinItems.java b/src/main/java/com/minelittlepony/unicopia/mixin/MixinItems.java index 74a54b4f..22b1b84b 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/MixinItems.java +++ b/src/main/java/com/minelittlepony/unicopia/mixin/MixinItems.java @@ -9,6 +9,7 @@ import com.minelittlepony.unicopia.item.VanillaOverrides; import net.minecraft.item.Item; import net.minecraft.item.Items; import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; @Mixin(Items.class) abstract class MixinItems { @@ -18,8 +19,10 @@ abstract class MixinItems { argsOnly = true) private static Item modifyItem(Item item, Identifier id, Item itemAlso) { // Registry#containsId is client-only :thonkjang: + // TODO: Move onGroundTick() event to MixinItem and make it a registerable event so we don't have to do this Item replacement = VanillaOverrides.REGISTRY.get(id); if (replacement != null) { + Registry.register(Registry.ITEM, new Identifier("unicopia_overriden", id.getPath()), item); return replacement; } return item; diff --git a/src/main/java/com/minelittlepony/unicopia/projectile/MagicProjectileEntity.java b/src/main/java/com/minelittlepony/unicopia/projectile/MagicProjectileEntity.java index 708b2db4..c0318b3f 100644 --- a/src/main/java/com/minelittlepony/unicopia/projectile/MagicProjectileEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/projectile/MagicProjectileEntity.java @@ -54,7 +54,7 @@ public class MagicProjectileEntity extends ThrownItemEntity implements Caster
  • DAMAGE = DataTracker.registerData(MagicProjectileEntity.class, TrackedDataHandlerRegistry.FLOAT); private static final TrackedData GRAVITY = DataTracker.registerData(MagicProjectileEntity.class, TrackedDataHandlerRegistry.FLOAT); private static final TrackedData HYDROPHOBIC = DataTracker.registerData(MagicProjectileEntity.class, TrackedDataHandlerRegistry.BOOLEAN); - private static final TrackedData EFFECT = DataTracker.registerData(MagicProjectileEntity.class, TrackedDataHandlerRegistry.TAG_COMPOUND); + private static final TrackedData EFFECT = DataTracker.registerData(MagicProjectileEntity.class, TrackedDataHandlerRegistry.NBT_COMPOUND); private static final LevelStore LEVELS = Levelled.fixed(1); public static final byte PROJECTILE_COLLISSION = 3; diff --git a/src/main/java/com/minelittlepony/unicopia/util/ItemTrace.java b/src/main/java/com/minelittlepony/unicopia/util/ItemTrace.java new file mode 100644 index 00000000..0f7c5c02 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/util/ItemTrace.java @@ -0,0 +1,13 @@ +package com.minelittlepony.unicopia.util; + +import java.util.HashSet; +import java.util.Set; + +public final class ItemTrace { + private static final Set> noticedClasses = new HashSet<>(); + public static void traceItem(Class c) { + if (noticedClasses.add(c)) { + System.out.println(c.getCanonicalName()); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/minelittlepony/unicopia/util/Registries.java b/src/main/java/com/minelittlepony/unicopia/util/Registries.java index e7cb56b2..f5f2ff31 100644 --- a/src/main/java/com/minelittlepony/unicopia/util/Registries.java +++ b/src/main/java/com/minelittlepony/unicopia/util/Registries.java @@ -1,15 +1,29 @@ package com.minelittlepony.unicopia.util; +import java.util.stream.Stream; + import com.mojang.serialization.Lifecycle; import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder; +import net.minecraft.tag.TagKey; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.RegistryEntry; +import net.minecraft.util.registry.RegistryEntryList; import net.minecraft.util.registry.RegistryKey; import net.minecraft.util.registry.SimpleRegistry; +import net.minecraft.world.World; public interface Registries { static Registry createSimple(Identifier id) { - return FabricRegistryBuilder.from(new SimpleRegistry(RegistryKey.ofRegistry(id), Lifecycle.stable())).buildAndRegister(); + return FabricRegistryBuilder.from(new SimpleRegistry(RegistryKey.ofRegistry(id), Lifecycle.stable(), null)).buildAndRegister(); + } + + static RegistryEntryList entriesForTag(World world, TagKey key) { + return world.getRegistryManager().get(key.registry()).getOrCreateEntryList(key); + } + + static Stream valuesForTag(World world, TagKey key) { + return entriesForTag(world, key).stream().map(RegistryEntry::value); } } diff --git a/src/main/resources/unicopia.mixin.json b/src/main/resources/unicopia.mixin.json index 3c1c6751..ad249f88 100644 --- a/src/main/resources/unicopia.mixin.json +++ b/src/main/resources/unicopia.mixin.json @@ -13,6 +13,7 @@ "MixinDamageSource", "MixinEntity", "MixinFallingBlock", + "MixinFallingBlockEntity", "MixinItem", "MixinItemEntity", "MixinItems",