diff --git a/SpongeAPI b/SpongeAPI index 717e4605585..307eddfad1f 160000 --- a/SpongeAPI +++ b/SpongeAPI @@ -1 +1 @@ -Subproject commit 717e4605585983a323fa2860962850f5dd17fb74 +Subproject commit 307eddfad1f2a9b84071039bb10949f8d138c8dd diff --git a/bootstrap/src/main/java/org/spongepowered/bootstrap/dev/DevClasspath.java b/bootstrap/src/main/java/org/spongepowered/bootstrap/dev/DevClasspath.java index fb7b3ddf7db..708594f063a 100644 --- a/bootstrap/src/main/java/org/spongepowered/bootstrap/dev/DevClasspath.java +++ b/bootstrap/src/main/java/org/spongepowered/bootstrap/dev/DevClasspath.java @@ -58,6 +58,7 @@ public static List resolve() { final AtomicBoolean hasAPISourceSet = new AtomicBoolean(false); + boolean skipMixinExtras = false; for (final String str : cp) { final Path path = Paths.get(str); if (!Files.exists(path)) { @@ -96,6 +97,9 @@ public static List resolve() { } break; case "", "vanilla", "forge", "neoforge": + if ("forge".equals(projectName)) { + skipMixinExtras = true; + } final WeightedPath weightedPath = new WeightedPath(projectName.isEmpty() ? 1 : 2, path); switch (sourceSet.name()) { case "applaunchConfig": @@ -132,6 +136,14 @@ public static List resolve() { } continue; } + // We need to skip mixinextras-common in Forge's UserDev mode as this will cause duplicate module + // errors with JPMS. + if (fileName.startsWith("mixinextras-common") && skipMixinExtras) { + if (Bootstrap.DEBUG) { + System.out.println("Ignored: " + path); + } + continue; + } if (bootNames.contains(fileName) || fileName.startsWith("org.jacoco.core-") || fileName.startsWith("mockito-") || fileName.startsWith("objenesis-")) { if (Bootstrap.DEBUG) { @@ -158,7 +170,7 @@ public static List resolve() { final List classpath = new ArrayList<>(); for (final Path lib : bootLibs) { - classpath.add(new Path[] { lib }); + classpath.add(new Path[]{lib}); } for (final List sourceSets : bootUnions.values()) { diff --git a/forge/gradle.properties b/forge/gradle.properties index 6759ac977d5..1ca22cd4a56 100644 --- a/forge/gradle.properties +++ b/forge/gradle.properties @@ -2,5 +2,5 @@ name=SpongeForge implementation=Forge description=The SpongeAPI implementation for MinecraftForge -forgeVersion=60.0.1 +forgeVersion=61.0.1 mixinConfigs=mixins.spongeforge.accessors.json,mixins.spongeforge.api.json,mixins.spongeforge.inventory.json,mixins.spongeforge.inventory.shared.json,mixins.spongeforge.core.json,mixins.spongeforge.core.shared.json,mixins.spongeforge.tracker.json diff --git a/forge/src/main/java/org/spongepowered/forge/hook/ForgeChannelHooks.java b/forge/src/main/java/org/spongepowered/forge/hook/ForgeChannelHooks.java index e2556d0d697..399375f877d 100644 --- a/forge/src/main/java/org/spongepowered/forge/hook/ForgeChannelHooks.java +++ b/forge/src/main/java/org/spongepowered/forge/hook/ForgeChannelHooks.java @@ -26,7 +26,7 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraftforge.network.ForgePayload; import org.spongepowered.api.ResourceKey; import org.spongepowered.common.hooks.ChannelHooks; @@ -46,6 +46,6 @@ public void registerPlatformChannels(final Consumer channels) { final FriendlyByteBuf payload = (FriendlyByteBuf) RegisterChannelUtil.encodePayload(channels); - return new ForgePayload((ResourceLocation) (Object) Constants.Channels.REGISTER_KEY, null, b -> b.writeBytes(payload)); + return new ForgePayload((Identifier) (Object) Constants.Channels.REGISTER_KEY, null, b -> b.writeBytes(payload)); } } diff --git a/forge/src/mixins/java/org/spongepowered/forge/mixin/core/minecraftforge/registries/ForgeRegistryMixin_Forge.java b/forge/src/mixins/java/org/spongepowered/forge/mixin/core/minecraftforge/registries/ForgeRegistryMixin_Forge.java index d382d4bd688..7d447c466e1 100644 --- a/forge/src/mixins/java/org/spongepowered/forge/mixin/core/minecraftforge/registries/ForgeRegistryMixin_Forge.java +++ b/forge/src/mixins/java/org/spongepowered/forge/mixin/core/minecraftforge/registries/ForgeRegistryMixin_Forge.java @@ -26,7 +26,7 @@ import com.google.common.collect.Maps; import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraftforge.registries.ForgeRegistry; import net.minecraftforge.registries.IForgeRegistry; import org.spongepowered.api.ResourceKey; @@ -55,10 +55,10 @@ public abstract class ForgeRegistryMixin_Forge { private final Map> forge$parents = Maps.newHashMap(); private boolean forge$warnedIfNoParent; - @Inject(method = "add(ILnet/minecraft/resources/ResourceLocation;Ljava/lang/Object;Ljava/lang/String;)I", at = @At("TAIL")) - public void forge$writeToParent(final int id, final ResourceLocation key, final V value, final String owner, final CallbackInfoReturnable cir) { + @Inject(method = "add(ILnet/minecraft/resources/Identifier;Ljava/lang/Object;Ljava/lang/String;)I", at = @At("TAIL")) + public void forge$writeToParent(final int id, final Identifier key, final V value, final String owner, final CallbackInfoReturnable cir) { final ResourceKey root = (ResourceKey) (Object) this.key.registry(); - final ResourceKey location = (ResourceKey) (Object) this.key.location(); + final var location = (ResourceKey) (Object) this.key.identifier(); if (!this.forge$warnedIfNoParent && this.forge$parents.isEmpty()) { // We only care about minecraft namespaced registries, as that is what we've got parents for. diff --git a/forge/src/mixins/java/org/spongepowered/forge/mixin/core/minecraftforge/registries/RegistryManagerMixin_Forge.java b/forge/src/mixins/java/org/spongepowered/forge/mixin/core/minecraftforge/registries/RegistryManagerMixin_Forge.java index f591b0f1463..dfa9d45f21e 100644 --- a/forge/src/mixins/java/org/spongepowered/forge/mixin/core/minecraftforge/registries/RegistryManagerMixin_Forge.java +++ b/forge/src/mixins/java/org/spongepowered/forge/mixin/core/minecraftforge/registries/RegistryManagerMixin_Forge.java @@ -24,7 +24,7 @@ */ package org.spongepowered.forge.mixin.core.minecraftforge.registries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraftforge.registries.ForgeRegistry; import net.minecraftforge.registries.RegistryManager; import org.spongepowered.asm.mixin.Mixin; @@ -39,7 +39,7 @@ public class RegistryManagerMixin_Forge { @SuppressWarnings("UnstableApiUsage") @Inject(method = "takeSnapshot", at = @At("RETURN")) - public void forge$dontSendSpongeDataToClient(boolean savingToDisc, CallbackInfoReturnable> cir) { + public void forge$dontSendSpongeDataToClient(boolean savingToDisc, CallbackInfoReturnable> cir) { if (savingToDisc) { return; } diff --git a/forge/src/mixins/java/org/spongepowered/forge/mixin/core/network/protocol/common/ClientboundCustomPayloadPacketMixin_Forge.java b/forge/src/mixins/java/org/spongepowered/forge/mixin/core/network/protocol/common/ClientboundCustomPayloadPacketMixin_Forge.java index be4df169def..6832fadbc81 100644 --- a/forge/src/mixins/java/org/spongepowered/forge/mixin/core/network/protocol/common/ClientboundCustomPayloadPacketMixin_Forge.java +++ b/forge/src/mixins/java/org/spongepowered/forge/mixin/core/network/protocol/common/ClientboundCustomPayloadPacketMixin_Forge.java @@ -28,7 +28,7 @@ import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraftforge.network.NetworkRegistry; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.Sponge; @@ -49,7 +49,7 @@ public abstract class ClientboundCustomPayloadPacketMixin_Forge { // @formatter: on @Inject(method = { "lambda$static$0", "lambda$static$2" }, at = @At("HEAD"), cancellable = true) - private static void forge$getSpongeCustomPacketPayload(final ResourceLocation channelKey, final CallbackInfoReturnable> cir) { + private static void forge$getSpongeCustomPacketPayload(final Identifier channelKey, final CallbackInfoReturnable> cir) { if (NetworkRegistry.findTarget(channelKey) != null) { return; } diff --git a/forge/src/mixins/java/org/spongepowered/forge/mixin/core/network/protocol/common/ServerboundCustomPayloadPacketMixin_Forge.java b/forge/src/mixins/java/org/spongepowered/forge/mixin/core/network/protocol/common/ServerboundCustomPayloadPacketMixin_Forge.java index e5aa2980470..c58e94df499 100644 --- a/forge/src/mixins/java/org/spongepowered/forge/mixin/core/network/protocol/common/ServerboundCustomPayloadPacketMixin_Forge.java +++ b/forge/src/mixins/java/org/spongepowered/forge/mixin/core/network/protocol/common/ServerboundCustomPayloadPacketMixin_Forge.java @@ -28,7 +28,7 @@ import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraftforge.network.NetworkRegistry; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.Sponge; @@ -49,7 +49,7 @@ public abstract class ServerboundCustomPayloadPacketMixin_Forge { // @formatter: on @Inject(method = { "lambda$static$0" }, at = @At("HEAD"), cancellable = true) - private static void forge$getSpongeCustomPacketPayload(final ResourceLocation channelKey, final CallbackInfoReturnable> cir) { + private static void forge$getSpongeCustomPacketPayload(final Identifier channelKey, final CallbackInfoReturnable> cir) { if (NetworkRegistry.findTarget(channelKey) != null) { return; } diff --git a/forge/src/mixins/java/org/spongepowered/forge/mixin/core/server/ReloadableServerResourcesMixin_Forge.java b/forge/src/mixins/java/org/spongepowered/forge/mixin/core/server/ReloadableServerResourcesMixin_Forge.java index 2d4516bc38d..e98b5000234 100644 --- a/forge/src/mixins/java/org/spongepowered/forge/mixin/core/server/ReloadableServerResourcesMixin_Forge.java +++ b/forge/src/mixins/java/org/spongepowered/forge/mixin/core/server/ReloadableServerResourcesMixin_Forge.java @@ -33,6 +33,7 @@ import net.minecraft.server.RegistryLayer; import net.minecraft.server.ReloadableServerResources; import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.permissions.PermissionSet; import net.minecraft.world.flag.FeatureFlagSet; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -44,9 +45,13 @@ @Mixin(ReloadableServerResources.class) public abstract class ReloadableServerResourcesMixin_Forge { - @WrapOperation(method = "lambda$loadResources$1", at = @At(value = "NEW", target = "(Lnet/minecraft/core/LayeredRegistryAccess;Lnet/minecraft/core/HolderLookup$Provider;Lnet/minecraft/world/flag/FeatureFlagSet;Lnet/minecraft/commands/Commands$CommandSelection;Ljava/util/List;I)Lnet/minecraft/server/ReloadableServerResources;")) - private static ReloadableServerResources impl$onCreateResources(final LayeredRegistryAccess $$0, final HolderLookup.Provider $$1, final FeatureFlagSet $$2, - final Commands.CommandSelection $$3, final List $$4, final int $$5, final Operation original, final @Local(argsOnly = true) ResourceManager resourceManager) { + @WrapOperation(method = "lambda$loadResources$1", at = @At(value = "NEW", + target = "(Lnet/minecraft/core/LayeredRegistryAccess;Lnet/minecraft/core/HolderLookup$Provider;Lnet/minecraft/world/flag/FeatureFlagSet;Lnet/minecraft/commands/Commands$CommandSelection;Ljava/util/List;Lnet/minecraft/server/permissions/PermissionSet;)Lnet/minecraft/server/ReloadableServerResources;" + )) + private static ReloadableServerResources impl$onCreateResources( + final LayeredRegistryAccess $$0, final HolderLookup.Provider $$1, final FeatureFlagSet $$2, + final Commands.CommandSelection $$3, final List $$4, final PermissionSet $$5, + final Operation original, final @Local(argsOnly = true) ResourceManager resourceManager) { final ReloadableServerResources instance = original.call($$0, $$1, $$2, $$3, $$4, $$5); if (instance.getCommands().getDispatcher() instanceof final DelegatingCommandDispatcher delegatingCommandDispatcher) { delegatingCommandDispatcher.permissionService(((ResourceManagerBridge) resourceManager).bridge$services().permissionService()); diff --git a/forge/src/mixins/java/org/spongepowered/forge/mixin/core/tags/TagLoaderMixin_Forge.java b/forge/src/mixins/java/org/spongepowered/forge/mixin/core/tags/TagLoaderMixin_Forge.java index e4d63fa91af..3491bcf0d4c 100644 --- a/forge/src/mixins/java/org/spongepowered/forge/mixin/core/tags/TagLoaderMixin_Forge.java +++ b/forge/src/mixins/java/org/spongepowered/forge/mixin/core/tags/TagLoaderMixin_Forge.java @@ -27,7 +27,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.llamalad7.mixinextras.sugar.Local; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.TagEntry; import net.minecraft.tags.TagLoader; import org.spongepowered.asm.mixin.Mixin; @@ -56,7 +56,7 @@ public abstract class TagLoaderMixin_Forge implements TagLoaderBridge { } @Inject(method = "lambda$build$6", at = @At("HEAD")) - private void forge$onStartBuildingTag(final TagEntry.Lookup $$0x, final Map> $$1x, final ResourceLocation $$2x, + private void forge$onStartBuildingTag(final TagEntry.Lookup $$0x, final Map> $$1x, final Identifier $$2x, final @Coerce Object $$3x, final CallbackInfo ci) { this.bridge$buildingTagKey($$2x); } diff --git a/forge/src/mixins/java/org/spongepowered/forge/mixin/core/world/entity/vehicle/BoatMixin_Forge.java b/forge/src/mixins/java/org/spongepowered/forge/mixin/core/world/entity/vehicle/boat/BoatMixin_Forge.java similarity index 95% rename from forge/src/mixins/java/org/spongepowered/forge/mixin/core/world/entity/vehicle/BoatMixin_Forge.java rename to forge/src/mixins/java/org/spongepowered/forge/mixin/core/world/entity/vehicle/boat/BoatMixin_Forge.java index e52b4a69c3c..8af584df124 100644 --- a/forge/src/mixins/java/org/spongepowered/forge/mixin/core/world/entity/vehicle/BoatMixin_Forge.java +++ b/forge/src/mixins/java/org/spongepowered/forge/mixin/core/world/entity/vehicle/boat/BoatMixin_Forge.java @@ -22,11 +22,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.forge.mixin.core.world.entity.vehicle; +package org.spongepowered.forge.mixin.core.world.entity.vehicle.boat; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.vehicle.AbstractBoat; +import net.minecraft.world.entity.vehicle.boat.AbstractBoat; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; diff --git a/forge/src/mixins/java/org/spongepowered/forge/mixin/core/world/level/block/entity/AbstractFurnaceBlockEntityMixin_Forge.java b/forge/src/mixins/java/org/spongepowered/forge/mixin/core/world/level/block/entity/AbstractFurnaceBlockEntityMixin_Forge.java index aa0bd75b07c..38d46dea6d9 100644 --- a/forge/src/mixins/java/org/spongepowered/forge/mixin/core/world/level/block/entity/AbstractFurnaceBlockEntityMixin_Forge.java +++ b/forge/src/mixins/java/org/spongepowered/forge/mixin/core/world/level/block/entity/AbstractFurnaceBlockEntityMixin_Forge.java @@ -99,13 +99,13 @@ public abstract class AbstractFurnaceBlockEntityMixin_Forge implements AbstractF final Cause cause = PhaseTracker.getInstance().currentCause(); if (entity.cookingTimer == 0) { // Start final CookingEvent.Start event = SpongeEventFactory.createCookingEventStart(cause, (FurnaceBlockEntity) entityIn, Optional.of(fuel), - Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().location())); + Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().identifier())); SpongeCommon.post(event); return !event.isCancelled(); } else { // Tick up final ItemStackSnapshot cooking = ItemStackUtil.snapshotOf(entity.items.getFirst()); final CookingEvent.Tick event = SpongeEventFactory.createCookingEventTick(cause, (FurnaceBlockEntity) entityIn, cooking, Optional.of(fuel), - Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().location())); + Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().identifier())); SpongeCommon.post(event); return !event.isCancelled(); } @@ -122,7 +122,7 @@ public abstract class AbstractFurnaceBlockEntityMixin_Forge implements AbstractF final var recipe = entity.bridge$getCurrentRecipe(); final ItemStackSnapshot cooking = ItemStackUtil.snapshotOf(entity.items.get(0)); final CookingEvent.Tick event = SpongeEventFactory.createCookingEventTick(cause, (FurnaceBlockEntity) entityIn, cooking, Optional.of(fuel), - recipe.map(r -> (CookingRecipe) r.value()), recipe.map(r -> (ResourceKey) (Object) r.id().location())); + recipe.map(r -> (CookingRecipe) r.value()), recipe.map(r -> (ResourceKey) (Object) r.id().identifier())); SpongeCommon.post(event); if (event.isCancelled()) { return entity.cookingTimer; // dont tick down @@ -174,7 +174,7 @@ public abstract class AbstractFurnaceBlockEntityMixin_Forge implements AbstractF } final Optional fuel = hasFuel && !slots.get(1).isEmpty() ? Optional.of(ItemStackUtil.snapshotOf(slots.get(1))) : Optional.empty(); final CookingEvent.Finish event = SpongeEventFactory.createCookingEventFinish(PhaseTracker.getInstance().currentCause(), entity, - fuel, Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().location()), Collections.unmodifiableList(transactions)); + fuel, Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().identifier()), Collections.unmodifiableList(transactions)); SpongeCommon.post(event); for (final SlotTransaction transaction : transactions) { diff --git a/forge/src/mixins/java/org/spongepowered/forge/mixin/tracker/world/level/block/BlockMixin_Forge_Tracker.java b/forge/src/mixins/java/org/spongepowered/forge/mixin/tracker/world/level/block/BlockMixin_Forge_Tracker.java index 64005dd321a..5a85dc8a59c 100644 --- a/forge/src/mixins/java/org/spongepowered/forge/mixin/tracker/world/level/block/BlockMixin_Forge_Tracker.java +++ b/forge/src/mixins/java/org/spongepowered/forge/mixin/tracker/world/level/block/BlockMixin_Forge_Tracker.java @@ -25,7 +25,7 @@ package org.spongepowered.forge.mixin.tracker.world.level.block; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import org.spongepowered.asm.mixin.Mixin; @@ -42,7 +42,7 @@ public abstract class BlockMixin_Forge_Tracker extends BlockBehaviorMixin_Forge_ //@formatter:on @Override - protected void forgeTracker$initializeTrackingState(CallbackInfoReturnable cir) { + protected void forgeTracker$initializeTrackingState(CallbackInfoReturnable cir) { // TODO Not the best check but the tracker options only matter during block ticks... if (this.isRandomlyTicking(this.defaultBlockState())) { this.bridge$refreshTrackerStates(); diff --git a/forge/src/mixins/java/org/spongepowered/forge/mixin/tracker/world/level/block/state/BlockBehaviorMixin_Forge_Tracker.java b/forge/src/mixins/java/org/spongepowered/forge/mixin/tracker/world/level/block/state/BlockBehaviorMixin_Forge_Tracker.java index 973df0af53f..fbc5f1cb190 100644 --- a/forge/src/mixins/java/org/spongepowered/forge/mixin/tracker/world/level/block/state/BlockBehaviorMixin_Forge_Tracker.java +++ b/forge/src/mixins/java/org/spongepowered/forge/mixin/tracker/world/level/block/state/BlockBehaviorMixin_Forge_Tracker.java @@ -25,7 +25,7 @@ package org.spongepowered.forge.mixin.tracker.world.level.block.state; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; import org.spongepowered.asm.mixin.Mixin; @@ -46,6 +46,6 @@ public abstract class BlockBehaviorMixin_Forge_Tracker { remap = false ) ) - protected void forgeTracker$initializeTrackingState(CallbackInfoReturnable cir) { + protected void forgeTracker$initializeTrackingState(CallbackInfoReturnable cir) { } } diff --git a/forge/src/mixins/resources/mixins.spongeforge.core.json b/forge/src/mixins/resources/mixins.spongeforge.core.json index 62a1c2a8d60..5a88ce6b7cf 100644 --- a/forge/src/mixins/resources/mixins.spongeforge.core.json +++ b/forge/src/mixins/resources/mixins.spongeforge.core.json @@ -25,7 +25,7 @@ "world.entity.LivingEntityMixin_Forge_Damage", "world.entity.item.ItemEntityMixin_Forge", "world.entity.player.PlayerMixin_Forge_Damage", - "world.entity.vehicle.BoatMixin_Forge", + "world.entity.vehicle.boat.BoatMixin_Forge", "world.level.ServerExplosionMixin_Forge", "world.level.block.FireBlockMixin_Forge", "world.level.block.entity.AbstractFurnaceBlockEntityMixin_Forge" diff --git a/generator/src/main/java/org/spongepowered/vanilla/generator/ClassFieldsValidator.java b/generator/src/main/java/org/spongepowered/vanilla/generator/ClassFieldsValidator.java index 058fc3ad58e..afa6de3b4fc 100644 --- a/generator/src/main/java/org/spongepowered/vanilla/generator/ClassFieldsValidator.java +++ b/generator/src/main/java/org/spongepowered/vanilla/generator/ClassFieldsValidator.java @@ -37,7 +37,7 @@ import com.github.javaparser.ast.expr.StringLiteralExpr; import com.github.javaparser.javadoc.Javadoc; import com.github.javaparser.javadoc.description.JavadocDescription; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.tinylog.Logger; import java.util.ArrayList; @@ -55,21 +55,21 @@ public class ClassFieldsValidator implements Generator { private final String relativePackageName; private final String targetClassSimpleName; private final Class clazz; - private final Function mapping; + private final Function mapping; public ClassFieldsValidator( final String targetRelativePackage, final String targetClassSimpleName, final Class clazz ) { - this(targetRelativePackage, targetClassSimpleName, clazz, name -> ResourceLocation.tryBuild("sponge", name.toLowerCase(Locale.ROOT))); + this(targetRelativePackage, targetClassSimpleName, clazz, name -> Identifier.tryBuild("sponge", name.toLowerCase(Locale.ROOT))); } public ClassFieldsValidator( final String targetRelativePackage, final String targetClassSimpleName, final Class clazz, - final Function mapping + final Function mapping ) { this.relativePackageName = targetRelativePackage; this.targetClassSimpleName = targetClassSimpleName; @@ -92,7 +92,7 @@ public void generate(final Context ctx) { primaryTypeDeclaration.setJavadocComment(new Javadoc(JavadocDescription.parseText(Generator.GENERATED_FILE_JAVADOCS))); - final List map = new ArrayList<>(); + final List map = new ArrayList<>(); for (final var field : this.clazz.getDeclaredFields()) { if (!java.lang.reflect.Modifier.isPublic(field.getModifiers()) || !java.lang.reflect.Modifier.isStatic(field.getModifiers())) { @@ -107,7 +107,7 @@ public void generate(final Context ctx) { // Find index of first field member // Take out all field members from the members list final var members = primaryTypeDeclaration.getMembers(); - final var fields = new HashMap(); + final var fields = new HashMap(); int lastNonFieldIndex = -1; for (final var it = members.listIterator(); it.hasNext(); ) { final var node = it.next(); @@ -123,10 +123,10 @@ public void generate(final Context ctx) { } // Now, iterate the registry, discovering which fields were added and removed - final var added = new HashSet(); + final var added = new HashSet(); final var processedFields = new ArrayList(map.size()); - final Set allKeys = new HashSet<>(map); - for (final ResourceLocation key : allKeys) { + final Set allKeys = new HashSet<>(map); + for (final Identifier key : allKeys) { final FieldDeclaration existing = fields.remove(key); if (existing != null) { processedFields.add(existing); @@ -149,36 +149,36 @@ public void generate(final Context ctx) { } // Attempt to get a resource location from the field by parsing its initializer - private ResourceLocation extractFieldIdentifier(final FieldDeclaration declaration) { + private Identifier extractFieldIdentifier(final FieldDeclaration declaration) { if (declaration.getVariables().isEmpty()) { throw new IllegalStateException("No variables for " + declaration); } final VariableDeclarator var = declaration.getVariable(0); final Expression initializer = var.getInitializer().orElse(null); if (!(initializer instanceof MethodCallExpr) || ((MethodCallExpr) initializer).getArguments().size() != 1) { - return ResourceLocation.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess + return Identifier.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess } final Expression argument = ((MethodCallExpr) initializer).getArgument(0); if (!(argument instanceof final MethodCallExpr keyInitializer) || keyInitializer.getArguments().size() < 1) { - return ResourceLocation.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess + return Identifier.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess } if (keyInitializer.getArguments().size() == 1) { // method name as namespace - return ResourceLocation.fromNamespaceAndPath(keyInitializer.getNameAsString(), keyInitializer.getArgument(0).asStringLiteralExpr().asString()); + return Identifier.fromNamespaceAndPath(keyInitializer.getNameAsString(), keyInitializer.getArgument(0).asStringLiteralExpr().asString()); } else if (keyInitializer.getArguments().size() == 2) { // (namespace, path) - return ResourceLocation.fromNamespaceAndPath( + return Identifier.fromNamespaceAndPath( keyInitializer.getArgument(0).asStringLiteralExpr().asString(), keyInitializer.getArgument(1).asStringLiteralExpr().asString() ); } else { - return ResourceLocation.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess + return Identifier.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess } } - private FieldDeclaration makeField(final String ownType, final String factoryMethod, final ResourceLocation element) { + private FieldDeclaration makeField(final String ownType, final String factoryMethod, final Identifier element) { final FieldDeclaration fieldDeclaration = new FieldDeclaration(); final VariableDeclarator variable = new VariableDeclarator(StaticJavaParser.parseType("DefaultedRegistryReference"), Types.keyToFieldName(element.getPath())); fieldDeclaration.getVariables().add(variable); @@ -187,7 +187,7 @@ private FieldDeclaration makeField(final String ownType, final String factoryMet return fieldDeclaration; } - public static MethodCallExpr resourceKey(final ResourceLocation location) { + public static MethodCallExpr resourceKey(final Identifier location) { Objects.requireNonNull(location, "location"); final var resourceKey = new NameExpr("ResourceKey"); return switch (location.getNamespace()) { diff --git a/generator/src/main/java/org/spongepowered/vanilla/generator/EnumEntriesValidator.java b/generator/src/main/java/org/spongepowered/vanilla/generator/EnumEntriesValidator.java index 7b1ce767b13..fe97aea0807 100644 --- a/generator/src/main/java/org/spongepowered/vanilla/generator/EnumEntriesValidator.java +++ b/generator/src/main/java/org/spongepowered/vanilla/generator/EnumEntriesValidator.java @@ -37,7 +37,7 @@ import com.github.javaparser.ast.expr.StringLiteralExpr; import com.github.javaparser.javadoc.Javadoc; import com.github.javaparser.javadoc.description.JavadocDescription; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.StringRepresentable; import org.tinylog.Logger; @@ -91,7 +91,7 @@ public void generate(final Context ctx) { // Find index of first field member // Take out all field members from the members list final var members = primaryTypeDeclaration.getMembers(); - final var fields = new HashMap(); + final var fields = new HashMap(); int lastNonFieldIndex = -1; for (final var it = members.listIterator(); it.hasNext();) { final var node = it.next(); @@ -107,7 +107,7 @@ public void generate(final Context ctx) { } // Now, iterate the registry, discovering which fields were added and removed - final var added = new HashSet(); + final var added = new HashSet(); final var processedFields = new ArrayList(map.length); for (final Enum f : map) { final String name; @@ -123,7 +123,7 @@ public void generate(final Context ctx) { } catch (Exception e) { throw new IllegalStateException("Failed to name for enum field in class " + this.clazz.getName(), e); } - final ResourceLocation key = ResourceLocation.fromNamespaceAndPath(this.namespace, name); + final Identifier key = Identifier.fromNamespaceAndPath(this.namespace, name); final FieldDeclaration existing = fields.remove(key); if (existing != null) { @@ -151,36 +151,36 @@ public void generate(final Context ctx) { } // Attempt to get a resource location from the field by parsing its initializer - private ResourceLocation extractFieldIdentifier(final FieldDeclaration declaration) { + private Identifier extractFieldIdentifier(final FieldDeclaration declaration) { if (declaration.getVariables().isEmpty()) { throw new IllegalStateException("No variables for " + declaration); } final VariableDeclarator var = declaration.getVariable(0); final Expression initializer = var.getInitializer().orElse(null); if (!(initializer instanceof MethodCallExpr) || ((MethodCallExpr) initializer).getArguments().size() != 1) { - return ResourceLocation.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess + return Identifier.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess } final Expression argument = ((MethodCallExpr) initializer).getArgument(0); if (!(argument instanceof final MethodCallExpr keyInitializer) || keyInitializer.getArguments().size() < 1) { - return ResourceLocation.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess + return Identifier.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess } if (keyInitializer.getArguments().size() == 1) { // method name as namespace - return ResourceLocation.fromNamespaceAndPath(keyInitializer.getNameAsString(), keyInitializer.getArgument(0).asStringLiteralExpr().asString()); + return Identifier.fromNamespaceAndPath(keyInitializer.getNameAsString(), keyInitializer.getArgument(0).asStringLiteralExpr().asString()); } else if (keyInitializer.getArguments().size() == 2) { // (namespace, path) - return ResourceLocation.fromNamespaceAndPath( + return Identifier.fromNamespaceAndPath( keyInitializer.getArgument(0).asStringLiteralExpr().asString(), keyInitializer.getArgument(1).asStringLiteralExpr().asString() ); } else { - return ResourceLocation.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess + return Identifier.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess } } - private FieldDeclaration makeField(final String ownType, final String factoryMethod, final ResourceLocation element) { + private FieldDeclaration makeField(final String ownType, final String factoryMethod, final Identifier element) { final FieldDeclaration fieldDeclaration = new FieldDeclaration(); final VariableDeclarator variable = new VariableDeclarator(StaticJavaParser.parseType("DefaultedRegistryReference"), Types.keyToFieldName(element.getPath())); fieldDeclaration.getVariables().add(variable); @@ -189,7 +189,7 @@ private FieldDeclaration makeField(final String ownType, final String factoryMet return fieldDeclaration; } - public static MethodCallExpr resourceKey(final ResourceLocation location) { + public static MethodCallExpr resourceKey(final Identifier location) { Objects.requireNonNull(location, "location"); final var resourceKey = new NameExpr("ResourceKey"); return switch (location.getNamespace()) { diff --git a/generator/src/main/java/org/spongepowered/vanilla/generator/GeneratorMain.java b/generator/src/main/java/org/spongepowered/vanilla/generator/GeneratorMain.java index 2978e69c86e..e8f3505e0d1 100644 --- a/generator/src/main/java/org/spongepowered/vanilla/generator/GeneratorMain.java +++ b/generator/src/main/java/org/spongepowered/vanilla/generator/GeneratorMain.java @@ -27,7 +27,6 @@ import com.github.javaparser.utils.Log; import com.mojang.datafixers.util.Pair; import net.minecraft.SharedConstants; -import net.minecraft.Util; import net.minecraft.commands.Commands.CommandSelection; import net.minecraft.core.HolderLookup; import net.minecraft.core.LayeredRegistryAccess; @@ -42,7 +41,9 @@ import net.minecraft.server.packs.repository.ServerPacksSource; import net.minecraft.server.packs.resources.CloseableResourceManager; import net.minecraft.server.packs.resources.MultiPackResourceManager; +import net.minecraft.server.permissions.LevelBasedPermissionSet; import net.minecraft.tags.TagLoader; +import net.minecraft.util.Util; import net.minecraft.world.level.WorldDataConfiguration; import org.spongepowered.vanilla.generator.item.ItemRegistries; import org.spongepowered.vanilla.generator.world.TagRegistries; @@ -151,7 +152,7 @@ private static Pair loadVanill pendingTags, packRepository.getRequestedFeatureFlags(), CommandSelection.ALL, - 2, // functionPermissionLevel + LevelBasedPermissionSet.ALL_PERMISSIONS, // functionPermissionLevel Util.backgroundExecutor(), // prepareExecutor Runnable::run // applyExecutor ).whenComplete((result, ex) -> { diff --git a/generator/src/main/java/org/spongepowered/vanilla/generator/MapEntriesValidator.java b/generator/src/main/java/org/spongepowered/vanilla/generator/MapEntriesValidator.java index e77780db0f6..8ca4527daed 100644 --- a/generator/src/main/java/org/spongepowered/vanilla/generator/MapEntriesValidator.java +++ b/generator/src/main/java/org/spongepowered/vanilla/generator/MapEntriesValidator.java @@ -37,7 +37,7 @@ import com.github.javaparser.ast.expr.StringLiteralExpr; import com.github.javaparser.javadoc.Javadoc; import com.github.javaparser.javadoc.description.JavadocDescription; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.tinylog.Logger; import java.util.ArrayList; @@ -56,7 +56,7 @@ public class MapEntriesValidator implements Generator { private final String targetClassSimpleName; private final Class clazz; private final String registry; - private final Function, Map> mapping; + private final Function, Map> mapping; MapEntriesValidator( final String targetRelativePackage, @@ -64,7 +64,7 @@ public class MapEntriesValidator implements Generator { final Class clazz, final String registry ) { - this(targetRelativePackage, targetClassSimpleName, clazz, registry, map -> (Map) map); + this(targetRelativePackage, targetClassSimpleName, clazz, registry, map -> (Map) map); } public MapEntriesValidator( @@ -72,7 +72,7 @@ public MapEntriesValidator( final String targetClassSimpleName, final Class clazz, final String registry, - final Function, Map> mapping + final Function, Map> mapping ) { this.relativePackageName = targetRelativePackage; this.targetClassSimpleName = targetClassSimpleName; @@ -96,7 +96,7 @@ public void generate(final Context ctx) { primaryTypeDeclaration.setJavadocComment(new Javadoc(JavadocDescription.parseText(Generator.GENERATED_FILE_JAVADOCS))); - final Map map; + final Map map; try { final var f = this.clazz.getDeclaredField(this.registry); f.setAccessible(true); @@ -112,7 +112,7 @@ public void generate(final Context ctx) { // Find index of first field member // Take out all field members from the members list final var members = primaryTypeDeclaration.getMembers(); - final var fields = new HashMap(); + final var fields = new HashMap(); int lastNonFieldIndex = -1; for (final var it = members.listIterator(); it.hasNext();) { final var node = it.next(); @@ -128,10 +128,10 @@ public void generate(final Context ctx) { } // Now, iterate the registry, discovering which fields were added and removed - final var added = new HashSet(); + final var added = new HashSet(); final var processedFields = new ArrayList(map.keySet().size()); - final Set allKeys = new HashSet<>(map.keySet()); - for (final ResourceLocation key : allKeys) { + final Set allKeys = new HashSet<>(map.keySet()); + for (final Identifier key : allKeys) { final FieldDeclaration existing = fields.remove(key); if (existing != null) { processedFields.add(existing); @@ -154,36 +154,36 @@ public void generate(final Context ctx) { } // Attempt to get a resource location from the field by parsing its initializer - private ResourceLocation extractFieldIdentifier(final FieldDeclaration declaration) { + private Identifier extractFieldIdentifier(final FieldDeclaration declaration) { if (declaration.getVariables().isEmpty()) { throw new IllegalStateException("No variables for " + declaration); } final VariableDeclarator var = declaration.getVariable(0); final Expression initializer = var.getInitializer().orElse(null); if (!(initializer instanceof MethodCallExpr) || ((MethodCallExpr) initializer).getArguments().size() != 1) { - return ResourceLocation.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess + return Identifier.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess } final Expression argument = ((MethodCallExpr) initializer).getArgument(0); if (!(argument instanceof final MethodCallExpr keyInitializer) || keyInitializer.getArguments().size() < 1) { - return ResourceLocation.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess + return Identifier.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess } if (keyInitializer.getArguments().size() == 1) { // method name as namespace - return ResourceLocation.fromNamespaceAndPath(keyInitializer.getNameAsString(), keyInitializer.getArgument(0).asStringLiteralExpr().asString()); + return Identifier.fromNamespaceAndPath(keyInitializer.getNameAsString(), keyInitializer.getArgument(0).asStringLiteralExpr().asString()); } else if (keyInitializer.getArguments().size() == 2) { // (namespace, path) - return ResourceLocation.fromNamespaceAndPath( + return Identifier.fromNamespaceAndPath( keyInitializer.getArgument(0).asStringLiteralExpr().asString(), keyInitializer.getArgument(1).asStringLiteralExpr().asString() ); } else { - return ResourceLocation.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess + return Identifier.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess } } - private FieldDeclaration makeField(final String ownType, final String factoryMethod, final ResourceLocation element) { + private FieldDeclaration makeField(final String ownType, final String factoryMethod, final Identifier element) { final FieldDeclaration fieldDeclaration = new FieldDeclaration(); final VariableDeclarator variable = new VariableDeclarator(StaticJavaParser.parseType("DefaultedRegistryReference"), Types.keyToFieldName(element.getPath())); fieldDeclaration.getVariables().add(variable); @@ -192,7 +192,7 @@ private FieldDeclaration makeField(final String ownType, final String factoryMet return fieldDeclaration; } - public static MethodCallExpr resourceKey(final ResourceLocation location) { + public static MethodCallExpr resourceKey(final Identifier location) { Objects.requireNonNull(location, "location"); final var resourceKey = new NameExpr("ResourceKey"); return switch (location.getNamespace()) { diff --git a/generator/src/main/java/org/spongepowered/vanilla/generator/RegistryEntriesGenerator.java b/generator/src/main/java/org/spongepowered/vanilla/generator/RegistryEntriesGenerator.java index bf578e919b0..97c04fbe46c 100644 --- a/generator/src/main/java/org/spongepowered/vanilla/generator/RegistryEntriesGenerator.java +++ b/generator/src/main/java/org/spongepowered/vanilla/generator/RegistryEntriesGenerator.java @@ -31,8 +31,8 @@ import net.minecraft.core.Holder; import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.flag.FeatureElement; import net.minecraft.world.flag.FeatureFlagSet; import net.minecraft.world.flag.FeatureFlags; @@ -109,7 +109,7 @@ public RegistryEntriesGenerator(final String relativePackageName, @Override public String name() { - return "elements of registry " + this.registry.location(); + return "elements of registry " + this.registry.identifier(); } @Override @@ -122,7 +122,7 @@ public void generate(final Context ctx) throws IOException { clazz.addAnnotation(Types.suppressWarnings("unused")); final RegistryScope scopeType; - Registry registry = (Registry) BuiltInRegistries.REGISTRY.get(this.registry.location()).map(Holder.Reference::value).orElse(null); + Registry registry = (Registry) BuiltInRegistries.REGISTRY.get(this.registry.identifier()).map(Holder.Reference::value).orElse(null); if (registry == null) { registry = ctx.registries().lookup(this.registry).orElse(null); if (registry == null) { @@ -152,7 +152,7 @@ public void generate(final Context ctx) throws IOException { ctx.compilationUnit(this.relativePackageName, this.targetClassSimpleName); } - private FieldSpec makeField(final String ownType, final TypeName fieldType, final MethodSpec factoryMethod, final ResourceLocation element, @Nullable final FeatureFlagSet featureFlagSet) { + private FieldSpec makeField(final String ownType, final TypeName fieldType, final MethodSpec factoryMethod, final Identifier element, @Nullable final FeatureFlagSet featureFlagSet) { final FieldSpec.Builder builder = FieldSpec.builder(fieldType, Types.keyToFieldName(element.getPath()), Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL) diff --git a/generator/src/main/java/org/spongepowered/vanilla/generator/RegistryEntriesValidator.java b/generator/src/main/java/org/spongepowered/vanilla/generator/RegistryEntriesValidator.java index 46d53c0ef3a..bf6202c06b1 100644 --- a/generator/src/main/java/org/spongepowered/vanilla/generator/RegistryEntriesValidator.java +++ b/generator/src/main/java/org/spongepowered/vanilla/generator/RegistryEntriesValidator.java @@ -39,8 +39,8 @@ import com.github.javaparser.javadoc.description.JavadocDescription; import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import org.tinylog.Logger; import java.util.ArrayList; @@ -59,7 +59,7 @@ public class RegistryEntriesValidator implements Generator { private final String targetClassSimpleName; private final ResourceKey> registry; private final Predicate filter; - private final Set extraEntries; + private final Set extraEntries; public RegistryEntriesValidator( final String targetRelativePackage, @@ -74,7 +74,7 @@ public RegistryEntriesValidator( final String targetClassSimpleName, final ResourceKey> registry, final Predicate filter, - final Set extraEntries + final Set extraEntries ) { this.relativePackageName = targetRelativePackage; this.targetClassSimpleName = targetClassSimpleName; @@ -85,7 +85,7 @@ public RegistryEntriesValidator( @Override public String name() { - return "elements of registry " + this.registry.location(); + return "elements of registry " + this.registry.identifier(); } @Override @@ -98,7 +98,7 @@ public void generate(final Context ctx) { Registry registry = ctx.registries().lookup(this.registry).orElse(null); if (registry == null) { - registry = (Registry) BuiltInRegistries.REGISTRY.get(this.registry.location()) + registry = (Registry) BuiltInRegistries.REGISTRY.get(this.registry.identifier()) .orElseThrow(() -> new IllegalArgumentException("Unknown registry " + this.registry)); } @@ -107,7 +107,7 @@ public void generate(final Context ctx) { // Find index of first field member // Take out all field members from the members list final var members = primaryTypeDeclaration.getMembers(); - final var fields = new HashMap(); + final var fields = new HashMap(); int lastNonFieldIndex = -1; for (final var it = members.listIterator(); it.hasNext();) { final var node = it.next(); @@ -123,11 +123,11 @@ public void generate(final Context ctx) { } // Now, iterate the registry, discovering which fields were added and removed - final var added = new HashSet(); + final var added = new HashSet(); final var processedFields = new ArrayList(registry.keySet().size()); - final Set allKeys = new HashSet<>(registry.keySet()); + final Set allKeys = new HashSet<>(registry.keySet()); allKeys.addAll(this.extraEntries); - for (final ResourceLocation key : allKeys) { + for (final Identifier key : allKeys) { if (!this.filter.test(registry.getValue(key))) { continue; } @@ -154,36 +154,36 @@ public void generate(final Context ctx) { } // Attempt to get a resource location from the field by parsing its initializer - private ResourceLocation extractFieldIdentifier(final FieldDeclaration declaration) { + private Identifier extractFieldIdentifier(final FieldDeclaration declaration) { if (declaration.getVariables().isEmpty()) { throw new IllegalStateException("No variables for " + declaration); } final VariableDeclarator var = declaration.getVariable(0); final Expression initializer = var.getInitializer().orElse(null); if (!(initializer instanceof MethodCallExpr) || ((MethodCallExpr) initializer).getArguments().size() != 1) { - return ResourceLocation.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess + return Identifier.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess } final Expression argument = ((MethodCallExpr) initializer).getArgument(0); if (!(argument instanceof final MethodCallExpr keyInitializer) || keyInitializer.getArguments().size() < 1) { - return ResourceLocation.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess + return Identifier.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess } if (keyInitializer.getArguments().size() == 1) { // method name as namespace - return ResourceLocation.fromNamespaceAndPath(keyInitializer.getNameAsString(), keyInitializer.getArgument(0).asStringLiteralExpr().asString()); + return Identifier.fromNamespaceAndPath(keyInitializer.getNameAsString(), keyInitializer.getArgument(0).asStringLiteralExpr().asString()); } else if (keyInitializer.getArguments().size() == 2) { // (namespace, path) - return ResourceLocation.fromNamespaceAndPath( + return Identifier.fromNamespaceAndPath( keyInitializer.getArgument(0).asStringLiteralExpr().asString(), keyInitializer.getArgument(1).asStringLiteralExpr().asString() ); } else { - return ResourceLocation.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess + return Identifier.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess } } - private FieldDeclaration makeField(final String ownType, final String factoryMethod, final ResourceLocation element) { + private FieldDeclaration makeField(final String ownType, final String factoryMethod, final Identifier element) { final FieldDeclaration fieldDeclaration = new FieldDeclaration(); final VariableDeclarator variable = new VariableDeclarator(StaticJavaParser.parseType("DefaultedRegistryReference"), Types.keyToFieldName(element.getPath())); fieldDeclaration.getVariables().add(variable); @@ -192,7 +192,7 @@ private FieldDeclaration makeField(final String ownType, final String factoryMet return fieldDeclaration; } - public static MethodCallExpr resourceKey(final ResourceLocation location) { + public static MethodCallExpr resourceKey(final Identifier location) { Objects.requireNonNull(location, "location"); final var resourceKey = new NameExpr("ResourceKey"); return switch (location.getNamespace()) { diff --git a/generator/src/main/java/org/spongepowered/vanilla/generator/TagGenerator.java b/generator/src/main/java/org/spongepowered/vanilla/generator/TagGenerator.java index c1c8c1007fb..96b8e6f4a56 100644 --- a/generator/src/main/java/org/spongepowered/vanilla/generator/TagGenerator.java +++ b/generator/src/main/java/org/spongepowered/vanilla/generator/TagGenerator.java @@ -31,8 +31,8 @@ import com.squareup.javapoet.TypeName; import net.minecraft.core.HolderSet; import net.minecraft.core.Registry; +import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import java.io.IOException; @@ -109,7 +109,7 @@ public void generate(final Context ctx) throws IOException { ctx.compilationUnit(this.relativePackageName, this.targetClassSimpleName); } - private FieldSpec makeField(final String ownType, final TypeName fieldType, final MethodSpec factoryMethod, final ResourceLocation element) { + private FieldSpec makeField(final String ownType, final TypeName fieldType, final MethodSpec factoryMethod, final Identifier element) { return FieldSpec.builder(fieldType, Types.keyToFieldName(element.getPath()), Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL) .initializer("$L.$N($L)", ownType, factoryMethod, Types.resourceKey(element)) .build(); diff --git a/generator/src/main/java/org/spongepowered/vanilla/generator/Types.java b/generator/src/main/java/org/spongepowered/vanilla/generator/Types.java index bc7cf62220b..1a72118cdad 100644 --- a/generator/src/main/java/org/spongepowered/vanilla/generator/Types.java +++ b/generator/src/main/java/org/spongepowered/vanilla/generator/Types.java @@ -31,7 +31,7 @@ import com.squareup.javapoet.TypeName; import com.squareup.javapoet.TypeSpec; import com.squareup.javapoet.WildcardTypeName; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import java.util.Locale; import java.util.Objects; @@ -111,7 +111,7 @@ static String keyToFieldName(final String key) { }; } - public static CodeBlock resourceKey(final ResourceLocation location) { + public static CodeBlock resourceKey(final Identifier location) { Objects.requireNonNull(location, "location"); return Types.resourceKey(location.getNamespace(), location.getPath()); } diff --git a/generator/src/main/java/org/spongepowered/vanilla/generator/item/ItemRegistries.java b/generator/src/main/java/org/spongepowered/vanilla/generator/item/ItemRegistries.java index 205a2cc1934..ed1abd33a8b 100644 --- a/generator/src/main/java/org/spongepowered/vanilla/generator/item/ItemRegistries.java +++ b/generator/src/main/java/org/spongepowered/vanilla/generator/item/ItemRegistries.java @@ -25,7 +25,7 @@ package org.spongepowered.vanilla.generator.item; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.Rarity; @@ -134,7 +134,7 @@ public static List itemRegistries(final Context context) { "data.type", "ArmorMaterials", ArmorMaterials.class, - (s) -> ResourceLocation.withDefaultNamespace(s.toLowerCase(Locale.ROOT)) + (s) -> Identifier.withDefaultNamespace(s.toLowerCase(Locale.ROOT)) ) ); } diff --git a/generator/src/main/java/org/spongepowered/vanilla/generator/world/entities/EntityRegistries.java b/generator/src/main/java/org/spongepowered/vanilla/generator/world/entities/EntityRegistries.java index 33143686f4a..cc947bd5e67 100644 --- a/generator/src/main/java/org/spongepowered/vanilla/generator/world/entities/EntityRegistries.java +++ b/generator/src/main/java/org/spongepowered/vanilla/generator/world/entities/EntityRegistries.java @@ -25,23 +25,23 @@ package org.spongepowered.vanilla.generator.world.entities; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.entity.Display; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.EquipmentSlotGroup; import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.entity.animal.Fox; -import net.minecraft.world.entity.animal.MushroomCow; -import net.minecraft.world.entity.animal.Panda; -import net.minecraft.world.entity.animal.Parrot; -import net.minecraft.world.entity.animal.Rabbit; -import net.minecraft.world.entity.animal.Salmon; -import net.minecraft.world.entity.animal.TropicalFish; import net.minecraft.world.entity.animal.axolotl.Axolotl; -import net.minecraft.world.entity.animal.horse.Llama; -import net.minecraft.world.entity.animal.horse.Markings; -import net.minecraft.world.entity.animal.horse.Variant; -import net.minecraft.world.entity.monster.SpellcasterIllager; +import net.minecraft.world.entity.animal.cow.MushroomCow; +import net.minecraft.world.entity.animal.equine.Llama; +import net.minecraft.world.entity.animal.equine.Markings; +import net.minecraft.world.entity.animal.equine.Variant; +import net.minecraft.world.entity.animal.fish.Salmon; +import net.minecraft.world.entity.animal.fish.TropicalFish; +import net.minecraft.world.entity.animal.fox.Fox; +import net.minecraft.world.entity.animal.panda.Panda; +import net.minecraft.world.entity.animal.parrot.Parrot; +import net.minecraft.world.entity.animal.rabbit.Rabbit; +import net.minecraft.world.entity.monster.illager.SpellcasterIllager; import org.spongepowered.vanilla.generator.Context; import org.spongepowered.vanilla.generator.EnumEntriesValidator; import org.spongepowered.vanilla.generator.Generator; @@ -205,7 +205,7 @@ public static List registryEntries(final Context context) { "EntityTypes", Registries.ENTITY_TYPE, $ -> true, - Set.of(ResourceLocation.fromNamespaceAndPath("sponge", "human")) // Sponge's Human type is an extra addition + Set.of(Identifier.fromNamespaceAndPath("sponge", "human")) // Sponge's Human type is an extra addition ), new RegistryEntriesGenerator<>( "data.type", diff --git a/generator/src/main/java/org/spongepowered/vanilla/generator/world/level/LevelDataRegistries.java b/generator/src/main/java/org/spongepowered/vanilla/generator/world/level/LevelDataRegistries.java index dd4262bcb91..4f10297e20f 100644 --- a/generator/src/main/java/org/spongepowered/vanilla/generator/world/level/LevelDataRegistries.java +++ b/generator/src/main/java/org/spongepowered/vanilla/generator/world/level/LevelDataRegistries.java @@ -24,39 +24,23 @@ */ package org.spongepowered.vanilla.generator.world.level; -import com.google.common.base.CaseFormat; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.GameRules; import org.spongepowered.vanilla.generator.Context; import org.spongepowered.vanilla.generator.Generator; -import org.spongepowered.vanilla.generator.MapEntriesValidator; import org.spongepowered.vanilla.generator.RegistryEntriesGenerator; import org.spongepowered.vanilla.generator.RegistryEntriesValidator; import org.spongepowered.vanilla.generator.RegistryScope; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.function.BiConsumer; public class LevelDataRegistries { public static List levelDataRegistries(final Context context) { return List.of( - new MapEntriesValidator<>( + new RegistryEntriesValidator<>( "world.gamerule", "GameRules", - GameRules.class, - "GAME_RULE_TYPES", - map -> { - final Map out = new HashMap<>(map.size()); - map.forEach((BiConsumer) (k, v) -> { - var key = (GameRules.Key) k; - out.put(ResourceLocation.fromNamespaceAndPath("sponge", CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, key.getId())), v); - }); - return out; - } + Registries.GAME_RULE ), new RegistryEntriesGenerator<>( "map.decoration", diff --git a/gradle.properties b/gradle.properties index 009b19b0151..32043ccde3d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,7 +11,7 @@ mixinConfigs=mixins.sponge.accessors.json,mixins.sponge.api.json,mixins.sponge.c mixins.sponge.entityactivation.json,mixins.sponge.exploit.json,mixins.sponge.inventory.json,mixins.sponge.movementcheck.json,\ mixins.sponge.tracker.json,mixins.sponge.ipforward.json,mixins.sponge.optimization.json,mixins.sponge.test.json -minecraftVersion=1.21.10 +minecraftVersion=1.21.11 recommendedVersion=0-SNAPSHOT org.gradle.dependency.verification.console=verbose diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 9112c2d8d7d..f98dda046ec 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -33,6 +33,25 @@ + + + + + + + + + + + + + + + + + + + @@ -54,6 +73,24 @@ + + + + + + + + + + + + + + + + + + @@ -657,6 +694,14 @@ + + + + + + + + @@ -672,6 +717,19 @@ + + + + + + + + + + + + + @@ -793,6 +851,14 @@ + + + + + + + + @@ -834,6 +900,11 @@ + + + + + @@ -977,6 +1048,19 @@ + + + + + + + + + + + + + @@ -1072,6 +1156,16 @@ + + + + + + + + + + @@ -1130,6 +1224,14 @@ + + + + + + + + @@ -1203,6 +1305,17 @@ + + + + + + + + + + + @@ -1248,6 +1361,16 @@ + + + + + + + + + + @@ -1317,6 +1440,14 @@ + + + + + + + + @@ -1438,6 +1569,14 @@ + + + + + + + + @@ -1486,6 +1625,14 @@ + + + + + + + + @@ -1622,6 +1769,22 @@ + + + + + + + + + + + + + + + + @@ -1662,6 +1825,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -1714,6 +1897,14 @@ + + + + + + + + @@ -1962,6 +2153,14 @@ + + + + + + + + @@ -2556,6 +2755,14 @@ + + + + + + + + @@ -2580,6 +2787,22 @@ + + + + + + + + + + + + + + + + @@ -2588,6 +2811,14 @@ + + + + + + + + @@ -2612,6 +2843,14 @@ + + + + + + + + @@ -2636,6 +2875,14 @@ + + + + + + + + @@ -2651,6 +2898,11 @@ + + + + + @@ -2675,6 +2927,14 @@ + + + + + + + + @@ -2699,6 +2959,14 @@ + + + + + + + + @@ -2723,6 +2991,22 @@ + + + + + + + + + + + + + + + + @@ -2759,6 +3043,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -2783,6 +3089,14 @@ + + + + + + + + @@ -2820,6 +3134,14 @@ + + + + + + + + @@ -3196,6 +3518,14 @@ + + + + + + + + @@ -3228,6 +3558,14 @@ + + + + + + + + @@ -4058,6 +4396,14 @@ + + + + + + + + @@ -4077,6 +4423,14 @@ + + + + + + + + @@ -4096,6 +4450,14 @@ + + + + + + + + @@ -4494,6 +4856,14 @@ + + + + + + + + @@ -4660,6 +5030,14 @@ + + + + + + + + @@ -4826,6 +5204,14 @@ + + + + + + + + @@ -5078,6 +5464,14 @@ + + + + + + + + @@ -5177,6 +5571,14 @@ + + + + + + + + @@ -5343,6 +5745,14 @@ + + + + + + + + @@ -5517,6 +5927,14 @@ + + + + + + + + @@ -5716,6 +6134,14 @@ + + + + + + + + @@ -5767,6 +6193,14 @@ + + + + + + + + @@ -5948,6 +6382,14 @@ + + + + + + + + @@ -6141,6 +6583,11 @@ + + + + + @@ -6220,6 +6667,20 @@ + + + + + + + + + + + + + + @@ -6228,6 +6689,14 @@ + + + + + + + + @@ -6340,6 +6809,14 @@ + + + + + + + + @@ -6444,6 +6921,14 @@ + + + + + + + + @@ -6572,6 +7057,14 @@ + + + + + + + + @@ -6868,6 +7361,14 @@ + + + + + + + + @@ -6905,6 +7406,14 @@ + + + + + + + + @@ -7031,6 +7540,11 @@ + + + + + @@ -7369,6 +7883,11 @@ + + + + + @@ -7435,6 +7954,14 @@ + + + + + + + + @@ -7443,12 +7970,15 @@ - - - + + + - - + + + + + @@ -7499,6 +8029,11 @@ + + + + + @@ -7549,6 +8084,14 @@ + + + + + + + + @@ -7557,12 +8100,15 @@ - - - + + + - - + + + + + @@ -7631,6 +8177,17 @@ + + + + + + + + + + + @@ -8854,6 +9411,14 @@ + + + + + + + + @@ -9602,6 +10167,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -9992,6 +10589,14 @@ + + + + + + + + @@ -10018,6 +10623,11 @@ + + + + + @@ -10058,6 +10668,11 @@ + + + + + @@ -10590,6 +11205,14 @@ + + + + + + + + diff --git a/neoforge/gradle.properties b/neoforge/gradle.properties index 66656a03bc3..48d323c8be4 100644 --- a/neoforge/gradle.properties +++ b/neoforge/gradle.properties @@ -2,5 +2,5 @@ name=SpongeNeo implementation=NeoForge description=The SpongeAPI implementation for NeoForge -neoForgeVersion=21.10.16-beta +neoForgeVersion=21.11.0-beta mixinConfigs=mixins.spongeneo.accessors.json,mixins.spongeneo.api.json,mixins.spongeneo.inventory.json,mixins.spongeneo.core.json,mixins.spongeneo.tracker.json diff --git a/neoforge/src/accessors/java/org/spongepowered/neoforge/accessor/neoforge/registries/RegistrySnapshotAccessor_Neo.java b/neoforge/src/accessors/java/org/spongepowered/neoforge/accessor/neoforge/registries/RegistrySnapshotAccessor_Neo.java index a3c22d65967..4b6cddb1cb7 100644 --- a/neoforge/src/accessors/java/org/spongepowered/neoforge/accessor/neoforge/registries/RegistrySnapshotAccessor_Neo.java +++ b/neoforge/src/accessors/java/org/spongepowered/neoforge/accessor/neoforge/registries/RegistrySnapshotAccessor_Neo.java @@ -25,7 +25,7 @@ package org.spongepowered.neoforge.accessor.neoforge.registries; import it.unimi.dsi.fastutil.ints.Int2ObjectSortedMap; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.neoforged.neoforge.registries.RegistrySnapshot; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @@ -34,5 +34,5 @@ public interface RegistrySnapshotAccessor_Neo { @Accessor("ids") - Int2ObjectSortedMap accessor$ids(); + Int2ObjectSortedMap accessor$ids(); } diff --git a/neoforge/src/applaunch/java/org/spongepowered/neoforge/applaunch/plugin/NeoForgePluginPlatform.java b/neoforge/src/applaunch/java/org/spongepowered/neoforge/applaunch/plugin/NeoForgePluginPlatform.java index 4daeaaabd44..3c1204b3ea8 100644 --- a/neoforge/src/applaunch/java/org/spongepowered/neoforge/applaunch/plugin/NeoForgePluginPlatform.java +++ b/neoforge/src/applaunch/java/org/spongepowered/neoforge/applaunch/plugin/NeoForgePluginPlatform.java @@ -26,7 +26,7 @@ import net.neoforged.fml.loading.FMLLoader; import net.neoforged.fml.loading.FMLPaths; -import net.neoforged.neoforge.internal.versions.neoforge.NeoForgeVersion; +import net.neoforged.neoforge.common.NeoForgeVersion; import org.spongepowered.common.applaunch.AppLaunch; import org.spongepowered.common.applaunch.config.LaunchConfig; import org.spongepowered.common.applaunch.config.TokenReplacement; diff --git a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/neoforge/registries/RegistryManagerMixin_Neo.java b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/neoforge/registries/RegistryManagerMixin_Neo.java index 390cfd4613b..b7b8f24f372 100644 --- a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/neoforge/registries/RegistryManagerMixin_Neo.java +++ b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/neoforge/registries/RegistryManagerMixin_Neo.java @@ -24,7 +24,7 @@ */ package org.spongepowered.neoforge.mixin.core.neoforge.registries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.neoforged.neoforge.registries.RegistryManager; import net.neoforged.neoforge.registries.RegistrySnapshot; import org.spongepowered.asm.mixin.Mixin; @@ -40,7 +40,7 @@ public class RegistryManagerMixin_Neo { @Inject(method = "takeSnapshot", at = @At("RETURN")) - private static void neo$dontSendSpongeDataToClient(RegistryManager.SnapshotType snapshotType, CallbackInfoReturnable> cir) { + private static void neo$dontSendSpongeDataToClient(RegistryManager.SnapshotType snapshotType, CallbackInfoReturnable> cir) { if (snapshotType != RegistryManager.SnapshotType.SYNC_TO_CLIENT) { return; } diff --git a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/server/ReloadableServerResourcesMixin_Neo.java b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/server/ReloadableServerResourcesMixin_Neo.java index 0b0698bfb04..45edb4ffa57 100644 --- a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/server/ReloadableServerResourcesMixin_Neo.java +++ b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/server/ReloadableServerResourcesMixin_Neo.java @@ -33,6 +33,7 @@ import net.minecraft.server.RegistryLayer; import net.minecraft.server.ReloadableServerResources; import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.permissions.PermissionSet; import net.minecraft.world.flag.FeatureFlagSet; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -44,9 +45,12 @@ @Mixin(ReloadableServerResources.class) public abstract class ReloadableServerResourcesMixin_Neo { - @WrapOperation(method = "lambda$loadResources$3", at = @At(value = "NEW", target = "(Lnet/minecraft/core/LayeredRegistryAccess;Lnet/minecraft/core/HolderLookup$Provider;Lnet/minecraft/world/flag/FeatureFlagSet;Lnet/minecraft/commands/Commands$CommandSelection;Ljava/util/List;I)Lnet/minecraft/server/ReloadableServerResources;")) - private static ReloadableServerResources impl$onCreateResources(final LayeredRegistryAccess $$0, final HolderLookup.Provider $$1, final FeatureFlagSet $$2, - final Commands.CommandSelection $$3, final List $$4, final int $$5, final Operation original, final @Local(argsOnly = true) ResourceManager resourceManager) { + @WrapOperation(method = "lambda$loadResources$3", at = @At(value = "NEW", + target = "(Lnet/minecraft/core/LayeredRegistryAccess;Lnet/minecraft/core/HolderLookup$Provider;Lnet/minecraft/world/flag/FeatureFlagSet;Lnet/minecraft/commands/Commands$CommandSelection;Ljava/util/List;Lnet/minecraft/server/permissions/PermissionSet;)Lnet/minecraft/server/ReloadableServerResources;")) + private static ReloadableServerResources impl$onCreateResources( + final LayeredRegistryAccess $$0, final HolderLookup.Provider $$1, final FeatureFlagSet $$2, + final Commands.CommandSelection $$3, final List $$4, final PermissionSet $$5, + final Operation original, final @Local(argsOnly = true) ResourceManager resourceManager) { final ReloadableServerResources instance = original.call($$0, $$1, $$2, $$3, $$4, $$5); if (instance.getCommands().getDispatcher() instanceof final DelegatingCommandDispatcher delegatingCommandDispatcher) { delegatingCommandDispatcher.permissionService(((ResourceManagerBridge) resourceManager).bridge$services().permissionService()); diff --git a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/tags/TagLoaderMixin_NeoForge.java b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/tags/TagLoaderMixin_NeoForge.java index f7b9276052f..5cc7735bec8 100644 --- a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/tags/TagLoaderMixin_NeoForge.java +++ b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/tags/TagLoaderMixin_NeoForge.java @@ -27,7 +27,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.llamalad7.mixinextras.sugar.Local; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.TagEntry; import net.minecraft.tags.TagLoader; import org.spongepowered.asm.mixin.Mixin; @@ -56,7 +56,7 @@ public abstract class TagLoaderMixin_NeoForge implements TagLoaderBridge { } @Inject(method = "lambda$build$6", at = @At("HEAD")) - private void neo$onStartBuildingTag(final TagEntry.Lookup $$0x, final Map> $$1x, final ResourceLocation $$2x, + private void neo$onStartBuildingTag(final TagEntry.Lookup $$0x, final Map> $$1x, final Identifier $$2x, final @Coerce Object $$3x, final CallbackInfo ci) { this.bridge$buildingTagKey($$2x); } diff --git a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/LivingEntityMixin_Neo_Damage.java b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/LivingEntityMixin_Neo_Damage.java index 52f9056e52b..053b1c6767d 100644 --- a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/LivingEntityMixin_Neo_Damage.java +++ b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/LivingEntityMixin_Neo_Damage.java @@ -71,7 +71,7 @@ public abstract class LivingEntityMixin_Neo_Damage implements TrackedDamageBridg } @ModifyVariable(method = "actuallyHurt", at = @At("LOAD"), ordinal = 3, slice = @Slice( - from = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerPlayer;awardStat(Lnet/minecraft/resources/ResourceLocation;I)V"), + from = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerPlayer;awardStat(Lnet/minecraft/resources/Identifier;I)V"), to = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;getCombatTracker()Lnet/minecraft/world/damagesource/CombatTracker;"))) private float damage$firePostEvent_Living(final float damage) { return this.damage$firePostEvent(damage); diff --git a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/animal/SnowGolemMixin_Neo.java b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/animal/golem/SnowGolemMixin_Neo.java similarity index 97% rename from neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/animal/SnowGolemMixin_Neo.java rename to neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/animal/golem/SnowGolemMixin_Neo.java index 564bae8e0e1..57c40a3356a 100644 --- a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/animal/SnowGolemMixin_Neo.java +++ b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/animal/golem/SnowGolemMixin_Neo.java @@ -22,11 +22,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.neoforge.mixin.core.world.entity.animal; +package org.spongepowered.neoforge.mixin.core.world.entity.animal.golem; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.animal.SnowGolem; +import net.minecraft.world.entity.animal.golem.SnowGolem; import net.neoforged.neoforge.event.EventHooks; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; diff --git a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/player/PlayerMixin_Neo_Damage.java b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/player/PlayerMixin_Neo_Damage.java index e25fc9102cd..a0c6b8c7cc6 100644 --- a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/player/PlayerMixin_Neo_Damage.java +++ b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/player/PlayerMixin_Neo_Damage.java @@ -63,7 +63,7 @@ public abstract class PlayerMixin_Neo_Damage extends LivingEntityMixin_Neo_Damag } @ModifyVariable(method = "actuallyHurt", at = @At("LOAD"), ordinal = 3, slice = @Slice( - from = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;awardStat(Lnet/minecraft/resources/ResourceLocation;I)V"), + from = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;awardStat(Lnet/minecraft/resources/Identifier;I)V"), to = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;causeFoodExhaustion(F)V"))) private float damage$firePostEvent_Player(final float damage) { return this.damage$firePostEvent(damage); diff --git a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/vehicle/AbstractBoatMixin_Neo.java b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/vehicle/boat/AbstractBoatMixin_Neo.java similarity index 97% rename from neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/vehicle/AbstractBoatMixin_Neo.java rename to neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/vehicle/boat/AbstractBoatMixin_Neo.java index 0be84dc6caf..e42d84f0743 100644 --- a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/vehicle/AbstractBoatMixin_Neo.java +++ b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/entity/vehicle/boat/AbstractBoatMixin_Neo.java @@ -22,11 +22,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.neoforge.mixin.core.world.entity.vehicle; +package org.spongepowered.neoforge.mixin.core.world.entity.vehicle.boat; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.vehicle.AbstractBoat; +import net.minecraft.world.entity.vehicle.boat.AbstractBoat; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; diff --git a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/level/block/entity/AbstractFurnaceBlockEntityMixin_Neo.java b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/level/block/entity/AbstractFurnaceBlockEntityMixin_Neo.java index fbfa6af4670..d67fc4ca999 100644 --- a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/level/block/entity/AbstractFurnaceBlockEntityMixin_Neo.java +++ b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/core/world/level/block/entity/AbstractFurnaceBlockEntityMixin_Neo.java @@ -96,13 +96,13 @@ public abstract class AbstractFurnaceBlockEntityMixin_Neo extends BaseContainerB final Cause cause = PhaseTracker.getInstance().currentCause(); if (entity.cookingTimer == 0) { // Start final CookingEvent.Start event = SpongeEventFactory.createCookingEventStart(cause, (FurnaceBlockEntity) entityIn, Optional.of(fuel), - Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().location())); + Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().identifier())); SpongeCommon.post(event); return !event.isCancelled(); } else { // Tick up final ItemStackSnapshot cooking = ItemStackUtil.snapshotOf(entity.items.getFirst()); final CookingEvent.Tick event = SpongeEventFactory.createCookingEventTick(cause, (FurnaceBlockEntity) entityIn, cooking, Optional.of(fuel), - Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().location())); + Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().identifier())); SpongeCommon.post(event); return !event.isCancelled(); } @@ -122,7 +122,7 @@ public abstract class AbstractFurnaceBlockEntityMixin_Neo extends BaseContainerB final var recipe = entity.bridge$getCurrentRecipe(); final ItemStackSnapshot cooking = ItemStackUtil.snapshotOf(entity.items.get(0)); final CookingEvent.Tick event = SpongeEventFactory.createCookingEventTick(cause, (FurnaceBlockEntity) entityIn, cooking, Optional.of(fuel), - recipe.map(r -> (CookingRecipe) r.value()), recipe.map(r -> (ResourceKey) (Object) r.id().location())); + recipe.map(r -> (CookingRecipe) r.value()), recipe.map(r -> (ResourceKey) (Object) r.id().identifier())); SpongeCommon.post(event); if (event.isCancelled()) { return entity.cookingTimer; // dont tick down @@ -182,7 +182,7 @@ public abstract class AbstractFurnaceBlockEntityMixin_Neo extends BaseContainerB } final Optional fuel = hasFuel && !slots.get(1).isEmpty() ? Optional.of(ItemStackUtil.snapshotOf(slots.get(1))) : Optional.empty(); final CookingEvent.Finish event = SpongeEventFactory.createCookingEventFinish(cause, entity, - fuel, Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().location()), Collections.unmodifiableList(transactions)); + fuel, Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().identifier()), Collections.unmodifiableList(transactions)); SpongeCommon.post(event); for (final SlotTransaction transaction : transactions) { diff --git a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/tracker/world/level/block/BlockMixin_Neo_Tracker.java b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/tracker/world/level/block/BlockMixin_Neo_Tracker.java index f9c274a8da3..dece1a48c8e 100644 --- a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/tracker/world/level/block/BlockMixin_Neo_Tracker.java +++ b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/tracker/world/level/block/BlockMixin_Neo_Tracker.java @@ -25,7 +25,7 @@ package org.spongepowered.neoforge.mixin.tracker.world.level.block; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import org.spongepowered.asm.mixin.Mixin; @@ -42,7 +42,7 @@ public abstract class BlockMixin_Neo_Tracker extends BlockBehaviorMixin_Neo_Trac //@formatter:on @Override - protected void forgeTracker$initializeTrackingState(CallbackInfoReturnable cir) { + protected void forgeTracker$initializeTrackingState(CallbackInfoReturnable cir) { // TODO Not the best check but the tracker options only matter during block ticks... if (this.isRandomlyTicking(this.defaultBlockState())) { this.bridge$refreshTrackerStates(); diff --git a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/tracker/world/level/block/state/BlockBehaviorMixin_Neo_Tracker.java b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/tracker/world/level/block/state/BlockBehaviorMixin_Neo_Tracker.java index 7f7eaf032b2..b708e30d113 100644 --- a/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/tracker/world/level/block/state/BlockBehaviorMixin_Neo_Tracker.java +++ b/neoforge/src/mixins/java/org/spongepowered/neoforge/mixin/tracker/world/level/block/state/BlockBehaviorMixin_Neo_Tracker.java @@ -25,7 +25,7 @@ package org.spongepowered.neoforge.mixin.tracker.world.level.block.state; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; import org.spongepowered.asm.mixin.Mixin; @@ -46,6 +46,6 @@ public abstract class BlockBehaviorMixin_Neo_Tracker { remap = false ) ) - protected void forgeTracker$initializeTrackingState(CallbackInfoReturnable cir) { + protected void forgeTracker$initializeTrackingState(CallbackInfoReturnable cir) { } } diff --git a/neoforge/src/mixins/resources/mixins.spongeneo.core.json b/neoforge/src/mixins/resources/mixins.spongeneo.core.json index d6ae4849c84..1f6a819a953 100644 --- a/neoforge/src/mixins/resources/mixins.spongeneo.core.json +++ b/neoforge/src/mixins/resources/mixins.spongeneo.core.json @@ -31,11 +31,11 @@ "world.entity.EntityMixin_Neo", "world.entity.LivingEntityMixin_Neo", "world.entity.LivingEntityMixin_Neo_Damage", - "world.entity.animal.SnowGolemMixin_Neo", + "world.entity.animal.golem.SnowGolemMixin_Neo", "world.entity.item.ItemEntityMixin_Neo", "world.entity.player.PlayerMixin_Neo_Damage", "world.entity.projectile.FishingHookMixin_Neo", - "world.entity.vehicle.AbstractBoatMixin_Neo", + "world.entity.vehicle.boat.AbstractBoatMixin_Neo", "world.level.ServerExplosionMixin_NeoForge", "world.level.block.FireBlockMixin_Neo", "world.level.block.entity.AbstractFurnaceBlockEntityMixin_Neo" diff --git a/src/accessors/java/org/spongepowered/common/accessor/client/multiplayer/ClientLevelAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/client/multiplayer/ClientLevelAccessor.java index d588cd5ff60..e1cea955966 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/client/multiplayer/ClientLevelAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/client/multiplayer/ClientLevelAccessor.java @@ -25,11 +25,9 @@ package org.spongepowered.common.accessor.client.multiplayer; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.renderer.DimensionSpecialEffects; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.entity.TransientEntitySectionManager; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.gen.Accessor; @Mixin(ClientLevel.class) @@ -37,5 +35,4 @@ public interface ClientLevelAccessor { @Accessor("entityStorage") TransientEntitySectionManager accessor$getEntityStorage(); - @Mutable @Accessor("effects") void accessor$effects(DimensionSpecialEffects effects); } diff --git a/src/accessors/java/org/spongepowered/common/accessor/commands/CommandSourceStackAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/commands/CommandSourceStackAccessor.java index f138e5b446f..c4ad6b45358 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/commands/CommandSourceStackAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/commands/CommandSourceStackAccessor.java @@ -32,6 +32,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.permissions.PermissionSet; import net.minecraft.util.TaskChainer; import net.minecraft.world.entity.Entity; import net.minecraft.world.phys.Vec2; @@ -50,7 +51,7 @@ public interface CommandSourceStackAccessor { final Vec3 $$1, final Vec2 $$2, final ServerLevel $$3, - final int $$4, + final PermissionSet $$4, final String $$5, final Component $$6, final MinecraftServer $$7, @Nullable final Entity $$8, diff --git a/src/accessors/java/org/spongepowered/common/accessor/entity/passive/AbstractChestedHorseEntityAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/entity/animal/equine/AbstractChestedHorseEntityAccessor.java similarity index 92% rename from src/accessors/java/org/spongepowered/common/accessor/entity/passive/AbstractChestedHorseEntityAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/entity/animal/equine/AbstractChestedHorseEntityAccessor.java index da4386c2b96..45d68eaf136 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/entity/passive/AbstractChestedHorseEntityAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/entity/animal/equine/AbstractChestedHorseEntityAccessor.java @@ -22,10 +22,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.entity.passive; +package org.spongepowered.common.accessor.entity.animal.equine; import net.minecraft.network.syncher.EntityDataAccessor; -import net.minecraft.world.entity.animal.horse.AbstractChestedHorse; +import net.minecraft.world.entity.animal.equine.AbstractChestedHorse; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.common.UntransformedAccessorError; diff --git a/src/accessors/java/org/spongepowered/common/accessor/entity/vehicle/AbstractMinecartAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/entity/vehicle/minecart/AbstractMinecartAccessor.java similarity index 92% rename from src/accessors/java/org/spongepowered/common/accessor/entity/vehicle/AbstractMinecartAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/entity/vehicle/minecart/AbstractMinecartAccessor.java index 49108ce7dcb..a95b583c59f 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/entity/vehicle/AbstractMinecartAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/entity/vehicle/minecart/AbstractMinecartAccessor.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.entity.vehicle; +package org.spongepowered.common.accessor.entity.vehicle.minecart; -import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; import net.minecraft.world.level.block.state.BlockState; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/accessors/java/org/spongepowered/common/accessor/resources/ResourceKeyAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/resources/ResourceKeyAccessor.java index cf288ba96a5..999584f968d 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/resources/ResourceKeyAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/resources/ResourceKeyAccessor.java @@ -24,8 +24,8 @@ */ package org.spongepowered.common.accessor.resources; +import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Invoker; @@ -34,9 +34,9 @@ @Mixin(ResourceKey.class) public interface ResourceKeyAccessor { - @Invoker("create") static ResourceKey invoker$create(final ResourceLocation p_240905_0_, final ResourceLocation p_240905_1_) { + @Invoker("create") static ResourceKey invoker$create(final Identifier p_240905_0_, final Identifier p_240905_1_) { throw new UntransformedInvokerError(); } - @Accessor("registryName") ResourceLocation accessor$registryName(); + @Accessor("registryName") Identifier accessor$registryName(); } diff --git a/src/accessors/java/org/spongepowered/common/accessor/server/MinecraftServerAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/server/MinecraftServerAccessor.java index a6d7e9e6127..cb25acec6a2 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/server/MinecraftServerAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/server/MinecraftServerAccessor.java @@ -61,8 +61,6 @@ public interface MinecraftServerAccessor { @Accessor("nextTickTimeNanos") void accessor$nextTickTimeNanos(final long nextTickTime); - @Invoker("isSpawningMonsters") boolean invoker$isSpawningMonsters(); - @Invoker("setupDebugLevel") void invoker$setupDebugLevel(final WorldData serverConfiguration); @Invoker("forceDifficulty") void invoker$forceDifficulty(); diff --git a/src/accessors/java/org/spongepowered/common/accessor/sounds/SoundEventAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/sounds/SoundEventAccessor.java index 35ebdd5a590..1ca68b206a6 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/sounds/SoundEventAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/sounds/SoundEventAccessor.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.accessor.sounds; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.sounds.SoundEvent; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; @@ -34,7 +34,7 @@ public interface SoundEventAccessor { @Invoker("createVariableRangeEvent") - static SoundEvent accessor$createVariableRangeEvent(ResourceLocation $$0) { + static SoundEvent accessor$createVariableRangeEvent(Identifier $$0) { throw new UntransformedAccessorError(); } diff --git a/src/accessors/java/org/spongepowered/common/accessor/tags/TagEntryAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/tags/TagEntryAccessor.java index f4b86e2eea8..fbe72f7628d 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/tags/TagEntryAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/tags/TagEntryAccessor.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.accessor.tags; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.TagEntry; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @@ -32,7 +32,7 @@ @Mixin(TagEntry.class) public interface TagEntryAccessor { - @Accessor("id") ResourceLocation accessor$id(); + @Accessor("id") Identifier accessor$id(); @Accessor("tag") boolean accessor$tag(); } diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/MooshroomAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/cow/MooshroomAccessor.java similarity index 92% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/MooshroomAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/cow/MooshroomAccessor.java index 90a3a1b3400..2a0c87e9d7f 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/MooshroomAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/cow/MooshroomAccessor.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.animal; +package org.spongepowered.common.accessor.world.entity.animal.cow; -import net.minecraft.world.entity.animal.MushroomCow; +import net.minecraft.world.entity.animal.cow.MushroomCow; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/horse/AbstractHorseAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/equine/AbstractHorseAccessor.java similarity index 92% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/horse/AbstractHorseAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/equine/AbstractHorseAccessor.java index db34c538344..1d66b24c54b 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/horse/AbstractHorseAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/equine/AbstractHorseAccessor.java @@ -22,11 +22,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.animal.horse; +package org.spongepowered.common.accessor.world.entity.animal.equine; import net.minecraft.world.entity.EntityReference; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.animal.horse.AbstractHorse; +import net.minecraft.world.entity.animal.equine.AbstractHorse; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/horse/HorseAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/equine/HorseAccessor.java similarity index 92% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/horse/HorseAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/equine/HorseAccessor.java index 3e51d825acc..44c8194f034 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/horse/HorseAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/equine/HorseAccessor.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.animal.horse; +package org.spongepowered.common.accessor.world.entity.animal.equine; -import net.minecraft.world.entity.animal.horse.Horse; +import net.minecraft.world.entity.animal.equine.Horse; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/horse/LlamaAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/equine/LlamaAccessor.java similarity index 92% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/horse/LlamaAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/equine/LlamaAccessor.java index 71dbf4dce10..5b00f50fa55 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/horse/LlamaAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/equine/LlamaAccessor.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.animal.horse; +package org.spongepowered.common.accessor.world.entity.animal.equine; -import net.minecraft.world.entity.animal.horse.Llama; +import net.minecraft.world.entity.animal.equine.Llama; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/horse/TraderLlamaAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/equine/TraderLlamaAccessor.java similarity index 92% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/horse/TraderLlamaAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/equine/TraderLlamaAccessor.java index 68de982a58d..52bbd33c7cc 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/horse/TraderLlamaAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/equine/TraderLlamaAccessor.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.animal.horse; +package org.spongepowered.common.accessor.world.entity.animal.equine; -import net.minecraft.world.entity.animal.horse.TraderLlama; +import net.minecraft.world.entity.animal.equine.TraderLlama; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/CatAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/feline/CatAccessor.java similarity index 90% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/CatAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/feline/CatAccessor.java index 22d4b2e3cf4..25a48474b53 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/CatAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/feline/CatAccessor.java @@ -22,11 +22,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.animal; +package org.spongepowered.common.accessor.world.entity.animal.feline; import net.minecraft.core.Holder; -import net.minecraft.world.entity.animal.Cat; -import net.minecraft.world.entity.animal.CatVariant; +import net.minecraft.world.entity.animal.feline.Cat; +import net.minecraft.world.entity.animal.feline.CatVariant; import net.minecraft.world.item.DyeColor; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/OcelotAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/feline/OcelotAccessor.java similarity index 92% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/OcelotAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/feline/OcelotAccessor.java index 79c98363632..1ede97ac4d1 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/OcelotAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/feline/OcelotAccessor.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.animal; +package org.spongepowered.common.accessor.world.entity.animal.feline; -import net.minecraft.world.entity.animal.Ocelot; +import net.minecraft.world.entity.animal.feline.Ocelot; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/PufferfishAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/fish/PufferfishAccessor.java similarity index 92% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/PufferfishAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/fish/PufferfishAccessor.java index e3ae8be5138..5060c719199 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/PufferfishAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/fish/PufferfishAccessor.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.animal; +package org.spongepowered.common.accessor.world.entity.animal.fish; -import net.minecraft.world.entity.animal.Pufferfish; +import net.minecraft.world.entity.animal.fish.Pufferfish; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; import org.spongepowered.common.UntransformedInvokerError; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/TropicalFishAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/fish/TropicalFishAccessor.java similarity index 94% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/TropicalFishAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/fish/TropicalFishAccessor.java index 1da1181ff1a..13f3b955bb4 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/TropicalFishAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/fish/TropicalFishAccessor.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.animal; +package org.spongepowered.common.accessor.world.entity.animal.fish; -import net.minecraft.world.entity.animal.TropicalFish; +import net.minecraft.world.entity.animal.fish.TropicalFish; import net.minecraft.world.item.DyeColor; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/FoxAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/fox/FoxAccessor.java similarity index 95% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/FoxAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/fox/FoxAccessor.java index 60245abf302..140de226c25 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/FoxAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/fox/FoxAccessor.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.animal; +package org.spongepowered.common.accessor.world.entity.animal.fox; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.world.entity.EntityReference; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.animal.Fox; +import net.minecraft.world.entity.animal.fox.Fox; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/PandaAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/panda/PandaAccessor.java similarity index 92% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/PandaAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/panda/PandaAccessor.java index 108632523f4..399206e5794 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/PandaAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/panda/PandaAccessor.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.animal; +package org.spongepowered.common.accessor.world.entity.animal.panda; -import net.minecraft.world.entity.animal.Panda; +import net.minecraft.world.entity.animal.panda.Panda; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/ParrotAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/parrot/ParrotAccessor.java similarity index 92% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/ParrotAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/parrot/ParrotAccessor.java index 2a8964e32ee..a22b68a2e17 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/ParrotAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/parrot/ParrotAccessor.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.animal; +package org.spongepowered.common.accessor.world.entity.animal.parrot; -import net.minecraft.world.entity.animal.Parrot; +import net.minecraft.world.entity.animal.parrot.Parrot; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/PigAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/pig/PigAccessor.java similarity index 89% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/PigAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/pig/PigAccessor.java index dfaef2f422e..e0ad6acb08d 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/PigAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/pig/PigAccessor.java @@ -22,11 +22,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.animal; +package org.spongepowered.common.accessor.world.entity.animal.pig; import net.minecraft.core.Holder; -import net.minecraft.world.entity.animal.Pig; -import net.minecraft.world.entity.animal.PigVariant; +import net.minecraft.world.entity.animal.pig.Pig; +import net.minecraft.world.entity.animal.pig.PigVariant; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/RabbitAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/rabbit/RabbitAccessor.java similarity index 92% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/RabbitAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/rabbit/RabbitAccessor.java index 167e4e0ef4d..8bc5ce21117 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/RabbitAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/rabbit/RabbitAccessor.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.animal; +package org.spongepowered.common.accessor.world.entity.animal.rabbit; -import net.minecraft.world.entity.animal.Rabbit; +import net.minecraft.world.entity.animal.rabbit.Rabbit; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/TurtleAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/turtle/TurtleAccessor.java similarity index 94% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/TurtleAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/turtle/TurtleAccessor.java index 1ade4b94020..84408ef5102 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/TurtleAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/animal/turtle/TurtleAccessor.java @@ -22,10 +22,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.animal; +package org.spongepowered.common.accessor.world.entity.animal.turtle; import net.minecraft.core.BlockPos; -import net.minecraft.world.entity.animal.Turtle; +import net.minecraft.world.entity.animal.turtle.Turtle; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/decoration/PaintingAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/decoration/painting/PaintingAccessor.java similarity index 91% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/decoration/PaintingAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/decoration/painting/PaintingAccessor.java index c9f442fadfa..eb4b8a1f96d 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/decoration/PaintingAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/decoration/painting/PaintingAccessor.java @@ -22,11 +22,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.decoration; +package org.spongepowered.common.accessor.world.entity.decoration.painting; import net.minecraft.core.Holder; -import net.minecraft.world.entity.decoration.Painting; -import net.minecraft.world.entity.decoration.PaintingVariant; +import net.minecraft.world.entity.decoration.painting.Painting; +import net.minecraft.world.entity.decoration.painting.PaintingVariant; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/EvokerAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/illager/EvokerAccessor.java similarity index 92% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/EvokerAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/illager/EvokerAccessor.java index 0c4d871b379..29293ef376c 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/EvokerAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/illager/EvokerAccessor.java @@ -22,10 +22,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.monster; +package org.spongepowered.common.accessor.world.entity.monster.illager; import net.minecraft.world.entity.animal.sheep.Sheep; -import net.minecraft.world.entity.monster.Evoker; +import net.minecraft.world.entity.monster.illager.Evoker; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/PillagerAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/illager/PillagerAccessor.java similarity index 92% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/PillagerAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/illager/PillagerAccessor.java index 7096fe2af7c..328797e1e1c 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/PillagerAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/illager/PillagerAccessor.java @@ -22,10 +22,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.monster; +package org.spongepowered.common.accessor.world.entity.monster.illager; import net.minecraft.network.syncher.EntityDataAccessor; -import net.minecraft.world.entity.monster.Pillager; +import net.minecraft.world.entity.monster.illager.Pillager; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.common.UntransformedAccessorError; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/SpellcasterIllagerAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/illager/SpellcasterIllagerAccessor.java similarity index 92% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/SpellcasterIllagerAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/illager/SpellcasterIllagerAccessor.java index 9ef5b5fa2f0..456016fb8b8 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/SpellcasterIllagerAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/illager/SpellcasterIllagerAccessor.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.monster; +package org.spongepowered.common.accessor.world.entity.monster.illager; -import net.minecraft.world.entity.monster.SpellcasterIllager; +import net.minecraft.world.entity.monster.illager.SpellcasterIllager; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/VindicatorAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/illager/VindicatorAccessor.java similarity index 91% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/VindicatorAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/illager/VindicatorAccessor.java index 4cfb51723b1..afedae4c32e 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/VindicatorAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/illager/VindicatorAccessor.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.monster; +package org.spongepowered.common.accessor.world.entity.monster.illager; -import net.minecraft.world.entity.monster.Vindicator; +import net.minecraft.world.entity.monster.illager.Vindicator; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/ZombifiedPiglinAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/zombie/ZombifiedPiglinAccessor.java similarity index 80% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/ZombifiedPiglinAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/zombie/ZombifiedPiglinAccessor.java index 4ab6bb3e630..321b56e95aa 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/ZombifiedPiglinAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/monster/zombie/ZombifiedPiglinAccessor.java @@ -22,16 +22,16 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.monster; +package org.spongepowered.common.accessor.world.entity.monster.zombie; -import net.minecraft.world.entity.monster.ZombifiedPiglin; +import net.minecraft.world.entity.monster.zombie.ZombifiedPiglin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @Mixin(ZombifiedPiglin.class) public interface ZombifiedPiglinAccessor { - @Accessor("remainingPersistentAngerTime") int accessor$remainingPersistentAngerTime(); + @Accessor("persistentAngerEndTime") long accessor$remainingPersistentAngerTime(); - @Accessor("remainingPersistentAngerTime") void accessor$remainingPersistentAngerTime(final int remainingPersistentAngerTime); + @Accessor("persistentAngerEndTime") void accessor$remainingPersistentAngerTime(final long remainingPersistentAngerTime); } diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/npc/AbstractVillagerAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/npc/villager/AbstractVillagerAccessor.java similarity index 92% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/npc/AbstractVillagerAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/npc/villager/AbstractVillagerAccessor.java index 3bcb04f866b..4f78ae7cfd8 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/npc/AbstractVillagerAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/npc/villager/AbstractVillagerAccessor.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.npc; +package org.spongepowered.common.accessor.world.entity.npc.villager; -import net.minecraft.world.entity.npc.AbstractVillager; +import net.minecraft.world.entity.npc.villager.AbstractVillager; import net.minecraft.world.item.trading.MerchantOffers; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/player/PlayerAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/player/PlayerAccessor.java index b865b4bcd36..b419f06bf7b 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/player/PlayerAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/player/PlayerAccessor.java @@ -25,6 +25,7 @@ package org.spongepowered.common.accessor.world.entity.player; import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.server.permissions.PermissionSet; import net.minecraft.world.entity.player.Player; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @@ -51,7 +52,7 @@ public interface PlayerAccessor { @Accessor("DATA_SHOULDER_PARROT_RIGHT") static EntityDataAccessor accessor$DATA_SHOULDER_RIGHT() { throw new UntransformedAccessorError(); } - @Invoker("getPermissionLevel") int invoker$getPermissionLevel(); + @Invoker("permissions") PermissionSet invoker$permissions(); @Accessor("sleepCounter") void accessor$sleepCounter(final int sleepCounter); diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/projectile/AbstractArrowAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/projectile/arrow/AbstractArrowAccessor.java similarity index 95% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/projectile/AbstractArrowAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/projectile/arrow/AbstractArrowAccessor.java index 812c3a52ca9..b1933f77215 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/projectile/AbstractArrowAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/projectile/arrow/AbstractArrowAccessor.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.projectile; +package org.spongepowered.common.accessor.world.entity.projectile.arrow; -import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.projectile.arrow.AbstractArrow; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/projectile/ArrowAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/projectile/arrow/ArrowAccessor.java similarity index 96% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/projectile/ArrowAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/projectile/arrow/ArrowAccessor.java index 7e197ba4819..a8b2151b4d6 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/projectile/ArrowAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/projectile/arrow/ArrowAccessor.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.projectile; +package org.spongepowered.common.accessor.world.entity.projectile.arrow; -import net.minecraft.world.entity.projectile.Arrow; +import net.minecraft.world.entity.projectile.arrow.Arrow; import net.minecraft.world.item.alchemy.PotionContents; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/vehicle/AbstractBoatAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/vehicle/boat/AbstractBoatAccessor.java similarity index 91% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/vehicle/AbstractBoatAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/vehicle/boat/AbstractBoatAccessor.java index 36f4de0698a..21008dca1ce 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/vehicle/AbstractBoatAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/vehicle/boat/AbstractBoatAccessor.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.vehicle; +package org.spongepowered.common.accessor.world.entity.vehicle.boat; -import net.minecraft.world.entity.vehicle.AbstractBoat; +import net.minecraft.world.entity.vehicle.boat.AbstractBoat; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/entity/vehicle/MinecartFurnaceAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/entity/vehicle/minecart/MinecartFurnaceAccessor.java similarity index 91% rename from src/accessors/java/org/spongepowered/common/accessor/world/entity/vehicle/MinecartFurnaceAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/entity/vehicle/minecart/MinecartFurnaceAccessor.java index 12dbc06a13e..b60733608e3 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/entity/vehicle/MinecartFurnaceAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/entity/vehicle/minecart/MinecartFurnaceAccessor.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.entity.vehicle; +package org.spongepowered.common.accessor.world.entity.vehicle.minecart; -import net.minecraft.world.entity.vehicle.MinecartFurnace; +import net.minecraft.world.entity.vehicle.minecart.MinecartFurnace; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/inventory/HorseInventoryMenuAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/inventory/AbstractMountInventoryMenuAccessor.java similarity index 84% rename from src/accessors/java/org/spongepowered/common/accessor/world/inventory/HorseInventoryMenuAccessor.java rename to src/accessors/java/org/spongepowered/common/accessor/world/inventory/AbstractMountInventoryMenuAccessor.java index 045f703fb0d..f676a038854 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/inventory/HorseInventoryMenuAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/inventory/AbstractMountInventoryMenuAccessor.java @@ -24,14 +24,14 @@ */ package org.spongepowered.common.accessor.world.inventory; -import net.minecraft.world.entity.animal.horse.AbstractHorse; -import net.minecraft.world.inventory.HorseInventoryMenu; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.inventory.AbstractMountInventoryMenu; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(HorseInventoryMenu.class) -public interface HorseInventoryMenuAccessor { +@Mixin(AbstractMountInventoryMenu.class) +public interface AbstractMountInventoryMenuAccessor { - @Accessor("horse") AbstractHorse accessor$horse(); + @Accessor("mount") LivingEntity accessor$mount(); } diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/item/AdventureModePredicateAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/item/AdventureModePredicateAccessor.java index 4c0425100ce..7026e5ee36d 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/item/AdventureModePredicateAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/item/AdventureModePredicateAccessor.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.accessor.world.item; -import net.minecraft.advancements.critereon.BlockPredicate; +import net.minecraft.advancements.criterion.BlockPredicate; import net.minecraft.world.item.AdventureModePredicate; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/level/BaseCommandBlockAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/level/BaseCommandBlockAccessor.java index 0ac83b2a8c0..9b527e7d30c 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/level/BaseCommandBlockAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/level/BaseCommandBlockAccessor.java @@ -25,6 +25,7 @@ package org.spongepowered.common.accessor.world.level; import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.BaseCommandBlock; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @@ -41,6 +42,6 @@ public interface BaseCommandBlockAccessor { @Accessor("command") void accessor$command(final String command); - @Invoker("createSource") BaseCommandBlock.CloseableCommandBlockSource invoker$createSource(); + @Invoker("createSource") BaseCommandBlock.CloseableCommandBlockSource invoker$createSource(ServerLevel level); } diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/level/GameRulesAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/level/GameRulesAccessor.java index 0e2dbdfff3e..ff2d062861f 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/level/GameRulesAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/level/GameRulesAccessor.java @@ -24,20 +24,16 @@ */ package org.spongepowered.common.accessor.world.level; -import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.gamerules.GameRuleMap; +import net.minecraft.world.level.gamerules.GameRules; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -import org.spongepowered.common.UntransformedAccessorError; -import java.util.Map; @Mixin(GameRules.class) public interface GameRulesAccessor { - @Accessor("rules") Map, GameRules.Value> accessor$rules(); + @Accessor("rules") GameRuleMap accessor$rules(); - @Accessor("GAME_RULE_TYPES") static Map, GameRules.Type> accessor$GAME_RULE_TYPES() { - throw new UntransformedAccessorError(); - } } diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/level/GameRules_ValueAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/level/GameRules_ValueAccessor.java index 9b0e219a7e6..476ad30520b 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/level/GameRules_ValueAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/level/GameRules_ValueAccessor.java @@ -24,13 +24,14 @@ */ package org.spongepowered.common.accessor.world.level; -import net.minecraft.world.level.GameRules; +import com.mojang.serialization.DataResult; +import net.minecraft.world.level.gamerules.GameRule; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; -@Mixin(GameRules.Value.class) +@Mixin(GameRule.class) public interface GameRules_ValueAccessor { - @Invoker("deserialize") void invoker$deserialize(final String serialized); + @Invoker("deserialize") DataResult invoker$deserialize(final String serialized); } diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/level/block/entity/SkullBlockEntityAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/level/block/entity/SkullBlockEntityAccessor.java index 28f76ba8277..2113216a8a7 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/level/block/entity/SkullBlockEntityAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/level/block/entity/SkullBlockEntityAccessor.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.accessor.world.level.block.entity; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.entity.SkullBlockEntity; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @@ -32,7 +32,7 @@ @Mixin(SkullBlockEntity.class) public interface SkullBlockEntityAccessor { - @Accessor("noteBlockSound") void accessor$noteBlockSound(final ResourceLocation location); + @Accessor("noteBlockSound") void accessor$noteBlockSound(final Identifier location); - @Accessor("noteBlockSound") ResourceLocation accessor$noteBlockSound(); + @Accessor("noteBlockSound") Identifier accessor$noteBlockSound(); } diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/level/dimension/DimensionTypeAccessor.java b/src/accessors/java/org/spongepowered/common/accessor/world/level/dimension/DimensionTypeAccessor.java index d0f7d6f4fd3..e90a8dac1e0 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/level/dimension/DimensionTypeAccessor.java +++ b/src/accessors/java/org/spongepowered/common/accessor/world/level/dimension/DimensionTypeAccessor.java @@ -28,12 +28,9 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -import java.util.OptionalLong; @Mixin(DimensionType.class) public interface DimensionTypeAccessor { - @Accessor("fixedTime") OptionalLong accessor$fixedTime(); - @Accessor("ambientLight") float accessor$ambientLight(); } diff --git a/src/accessors/resources/mixins.sponge.accessors.json b/src/accessors/resources/mixins.sponge.accessors.json index e3bfa53181a..f2abde481fd 100644 --- a/src/accessors/resources/mixins.sponge.accessors.json +++ b/src/accessors/resources/mixins.sponge.accessors.json @@ -18,8 +18,8 @@ "commands.arguments.selector.options.EntitySelectorOptionsAccessor", "core.MappedRegistryAccessor", "entity.animal.frog.FrogAccessor", - "entity.passive.AbstractChestedHorseEntityAccessor", - "entity.vehicle.AbstractMinecartAccessor", + "entity.animal.equine.AbstractChestedHorseEntityAccessor", + "entity.vehicle.minecart.AbstractMinecartAccessor", "network.ConnectionAccessor", "network.chat.StyleAccessor", "network.protocol.game.ClientboundAddEntityPacketAccessor", @@ -75,22 +75,22 @@ "world.entity.PortalProcessorAccessor", "world.entity.ai.targeting.TargetingConditionsAccessor", "world.entity.animal.AnimalAccessor", - "world.entity.animal.CatAccessor", - "world.entity.animal.FoxAccessor", - "world.entity.animal.MooshroomAccessor", - "world.entity.animal.OcelotAccessor", - "world.entity.animal.PandaAccessor", - "world.entity.animal.ParrotAccessor", - "world.entity.animal.PigAccessor", - "world.entity.animal.PufferfishAccessor", - "world.entity.animal.RabbitAccessor", - "world.entity.animal.TropicalFishAccessor", - "world.entity.animal.TurtleAccessor", + "world.entity.animal.feline.CatAccessor", + "world.entity.animal.fox.FoxAccessor", + "world.entity.animal.cow.MooshroomAccessor", + "world.entity.animal.feline.OcelotAccessor", + "world.entity.animal.panda.PandaAccessor", + "world.entity.animal.parrot.ParrotAccessor", + "world.entity.animal.pig.PigAccessor", + "world.entity.animal.fish.PufferfishAccessor", + "world.entity.animal.rabbit.RabbitAccessor", + "world.entity.animal.fish.TropicalFishAccessor", + "world.entity.animal.turtle.TurtleAccessor", "world.entity.animal.frog.TadpoleAccessor", - "world.entity.animal.horse.AbstractHorseAccessor", - "world.entity.animal.horse.HorseAccessor", - "world.entity.animal.horse.LlamaAccessor", - "world.entity.animal.horse.TraderLlamaAccessor", + "world.entity.animal.equine.AbstractHorseAccessor", + "world.entity.animal.equine.HorseAccessor", + "world.entity.animal.equine.LlamaAccessor", + "world.entity.animal.equine.TraderLlamaAccessor", "world.entity.animal.sheep.SheepAccessor", "world.entity.animal.wolf.WolfAccessor", "world.entity.boss.enderdragon.phases.EnderDragonPhaseAccessor", @@ -98,29 +98,29 @@ "world.entity.decoration.ArmorStandAccessor", "world.entity.decoration.HangingEntityAccessor", "world.entity.decoration.ItemFrameAccessor", - "world.entity.decoration.PaintingAccessor", + "world.entity.decoration.painting.PaintingAccessor", "world.entity.item.FallingBlockEntityAccessor", "world.entity.item.PrimedTntAccessor", "world.entity.monster.BlazeAccessor", "world.entity.monster.CreeperAccessor", "world.entity.monster.EnderManAccessor", "world.entity.monster.EndermiteAccessor", - "world.entity.monster.EvokerAccessor", + "world.entity.monster.illager.EvokerAccessor", "world.entity.monster.GuardianAccessor", "world.entity.monster.PatrollingMonsterAccessor", "world.entity.monster.PhantomAccessor", - "world.entity.monster.PillagerAccessor", + "world.entity.monster.illager.PillagerAccessor", "world.entity.monster.RavagerAccessor", "world.entity.monster.SlimeAccessor", - "world.entity.monster.SpellcasterIllagerAccessor", + "world.entity.monster.illager.SpellcasterIllagerAccessor", "world.entity.monster.VexAccessor", - "world.entity.monster.VindicatorAccessor", - "world.entity.monster.ZombifiedPiglinAccessor", - "world.entity.npc.AbstractVillagerAccessor", + "world.entity.monster.illager.VindicatorAccessor", + "world.entity.monster.zombie.ZombifiedPiglinAccessor", + "world.entity.npc.villager.AbstractVillagerAccessor", "world.entity.player.AbilitiesAccessor", "world.entity.player.PlayerAccessor", - "world.entity.projectile.AbstractArrowAccessor", - "world.entity.projectile.ArrowAccessor", + "world.entity.projectile.arrow.AbstractArrowAccessor", + "world.entity.projectile.arrow.ArrowAccessor", "world.entity.projectile.EyeOfEnderAccessor", "world.entity.projectile.FireworkRocketEntityAccessor", "world.entity.projectile.FishingHookAccessor", @@ -128,8 +128,8 @@ "world.entity.raid.RaidAccessor", "world.entity.raid.RaiderAccessor", "world.entity.raid.RaidsAccessor", - "world.entity.vehicle.AbstractBoatAccessor", - "world.entity.vehicle.MinecartFurnaceAccessor", + "world.entity.vehicle.boat.AbstractBoatAccessor", + "world.entity.vehicle.minecart.MinecartFurnaceAccessor", "world.food.FoodDataAccessor", "world.inventory.AbstractContainerMenuAccessor", "world.inventory.AbstractCraftingMenuAccessor", @@ -138,7 +138,7 @@ "world.inventory.BrewingStandMenuAccessor", "world.inventory.DispenserMenuAccessor", "world.inventory.HopperMenuAccessor", - "world.inventory.HorseInventoryMenuAccessor", + "world.inventory.AbstractMountInventoryMenuAccessor", "world.inventory.ItemCombinerMenuAccessor", "world.inventory.MerchantMenuAccessor", "world.inventory.ResultSlotAccessor", @@ -202,7 +202,6 @@ "world.level.chunk.LevelChunk$BoundTickingBlockEntityAccessor", "world.level.chunk.LevelChunk$RebindableTickingBlockEntityWrapperAccessor", "world.level.chunk.LevelChunkAccessor", - "world.level.chunk.storage.ChunkStorageAccessor", "world.level.chunk.storage.IOWorker$PendingStoreAccessor", "world.level.chunk.storage.RegionFileAccessor", "world.level.chunk.storage.SimpleRegionStorageAccessor", diff --git a/src/launch/java/org/spongepowered/common/launch/Lifecycle.java b/src/launch/java/org/spongepowered/common/launch/Lifecycle.java index 01229128bde..20d0d6de404 100644 --- a/src/launch/java/org/spongepowered/common/launch/Lifecycle.java +++ b/src/launch/java/org/spongepowered/common/launch/Lifecycle.java @@ -26,6 +26,7 @@ import com.google.inject.Injector; import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.permissions.PermissionLevel; import net.minecraft.world.level.WorldDataConfiguration; import org.spongepowered.api.Client; import org.spongepowered.api.Engine; @@ -66,7 +67,7 @@ public interface Lifecycle { void establishGameServices(); - void establishServerServices(ResourceManager resourceManager, int functionsPermissionLevel); + void establishServerServices(ResourceManager resourceManager, PermissionLevel functionsPermissionLevel); void establishServerFeatures(); diff --git a/src/main/java/org/spongepowered/common/SpongeLifecycle.java b/src/main/java/org/spongepowered/common/SpongeLifecycle.java index 7b7cbb944c8..e4d5d8526da 100644 --- a/src/main/java/org/spongepowered/common/SpongeLifecycle.java +++ b/src/main/java/org/spongepowered/common/SpongeLifecycle.java @@ -31,6 +31,7 @@ import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.permissions.PermissionLevel; import net.minecraft.world.flag.FeatureFlagSet; import net.minecraft.world.level.WorldDataConfiguration; import org.checkerframework.checker.nullness.qual.Nullable; @@ -179,7 +180,7 @@ public void establishGameServices() { } @Override - public void establishServerServices(final ResourceManager resourceManager, final int functionsPermissionLevel) { + public void establishServerServices(final ResourceManager resourceManager, final PermissionLevel functionsPermissionLevel) { final SpongeServerScopedServiceProvider serviceProvider = new SpongeServerScopedServiceProvider(this.game, this.injector, functionsPermissionLevel); serviceProvider.init(); ((ResourceManagerBridge) resourceManager).bridge$services(serviceProvider); diff --git a/src/main/java/org/spongepowered/common/advancement/SpongeAdvancementBuilder.java b/src/main/java/org/spongepowered/common/advancement/SpongeAdvancementBuilder.java index 505a182d0d2..5f9dda5e4a2 100644 --- a/src/main/java/org/spongepowered/common/advancement/SpongeAdvancementBuilder.java +++ b/src/main/java/org/spongepowered/common/advancement/SpongeAdvancementBuilder.java @@ -29,7 +29,7 @@ import net.minecraft.advancements.AdvancementRewards; import net.minecraft.advancements.Criterion; import net.minecraft.core.ClientAsset; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.advancement.Advancement; @@ -48,7 +48,7 @@ public final class SpongeAdvancementBuilder implements Advancement.Builder.RootStep { - private @Nullable ResourceLocation parent; + private @Nullable Identifier parent; private AdvancementCriterion criterion; private @Nullable DisplayInfo displayInfo; private @Nullable ClientAsset backgroundPath; @@ -59,7 +59,7 @@ public SpongeAdvancementBuilder() { @Override public Advancement.Builder parent(final ResourceKey parent) { - this.parent = (ResourceLocation) (Object) parent; + this.parent = (Identifier) (Object) parent; this.backgroundPath = null; return this; } @@ -72,7 +72,7 @@ public Advancement.Builder.RootStep root() { @Override public Advancement.Builder background(final ResourceKey backgroundPath) { - this.backgroundPath = new ClientAsset.ResourceTexture((ResourceLocation) (Object) backgroundPath); + this.backgroundPath = new ClientAsset.ResourceTexture((Identifier) (Object) backgroundPath); return this; } @@ -91,7 +91,7 @@ public Advancement.Builder displayInfo(final @Nullable DisplayInfo displayInfo) @Override public Advancement.Builder from(final Advancement value) { - this.parent = (ResourceLocation) (Object) value.parent().orElse(null); + this.parent = (Identifier) (Object) value.parent().orElse(null); this.criterion = value.criterion(); this.displayInfo = value.displayInfo().orElse(null); this.backgroundPath = ((net.minecraft.advancements.Advancement) (Object) value).display() diff --git a/src/main/java/org/spongepowered/common/advancement/SpongeFilteredTrigger.java b/src/main/java/org/spongepowered/common/advancement/SpongeFilteredTrigger.java index 0a695d0e35d..705d5b3aa87 100644 --- a/src/main/java/org/spongepowered/common/advancement/SpongeFilteredTrigger.java +++ b/src/main/java/org/spongepowered/common/advancement/SpongeFilteredTrigger.java @@ -27,7 +27,7 @@ import com.google.gson.Gson; import com.google.gson.JsonObject; import net.minecraft.advancements.CriterionTriggerInstance; -import net.minecraft.advancements.critereon.CriterionValidator; +import net.minecraft.advancements.criterion.CriterionValidator; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.spongepowered.api.advancement.criteria.trigger.FilteredTrigger; diff --git a/src/main/java/org/spongepowered/common/advancement/criterion/SpongeDummyTrigger.java b/src/main/java/org/spongepowered/common/advancement/criterion/SpongeDummyTrigger.java index e9c244445b1..67edf73cbb9 100644 --- a/src/main/java/org/spongepowered/common/advancement/criterion/SpongeDummyTrigger.java +++ b/src/main/java/org/spongepowered/common/advancement/criterion/SpongeDummyTrigger.java @@ -26,9 +26,9 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.advancements.critereon.ContextAwarePredicate; -import net.minecraft.advancements.critereon.EntityPredicate; -import net.minecraft.advancements.critereon.SimpleCriterionTrigger; +import net.minecraft.advancements.criterion.ContextAwarePredicate; +import net.minecraft.advancements.criterion.EntityPredicate; +import net.minecraft.advancements.criterion.SimpleCriterionTrigger; import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; diff --git a/src/main/java/org/spongepowered/common/advancement/criterion/SpongeScoreTrigger.java b/src/main/java/org/spongepowered/common/advancement/criterion/SpongeScoreTrigger.java index cf02aad5240..dc748afd4ee 100644 --- a/src/main/java/org/spongepowered/common/advancement/criterion/SpongeScoreTrigger.java +++ b/src/main/java/org/spongepowered/common/advancement/criterion/SpongeScoreTrigger.java @@ -26,9 +26,9 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.advancements.critereon.ContextAwarePredicate; -import net.minecraft.advancements.critereon.EntityPredicate; -import net.minecraft.advancements.critereon.SimpleCriterionTrigger; +import net.minecraft.advancements.criterion.ContextAwarePredicate; +import net.minecraft.advancements.criterion.EntityPredicate; +import net.minecraft.advancements.criterion.SimpleCriterionTrigger; import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; diff --git a/src/main/java/org/spongepowered/common/adventure/SpongeAdventure.java b/src/main/java/org/spongepowered/common/adventure/SpongeAdventure.java index f6c7eaa7641..40c93f0b8e5 100644 --- a/src/main/java/org/spongepowered/common/adventure/SpongeAdventure.java +++ b/src/main/java/org/spongepowered/common/adventure/SpongeAdventure.java @@ -84,8 +84,8 @@ import net.minecraft.network.chat.contents.data.BlockDataSource; import net.minecraft.network.chat.contents.data.EntityDataSource; import net.minecraft.network.chat.contents.data.StorageDataSource; +import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerBossEvent; import net.minecraft.sounds.SoundSource; import net.minecraft.world.BossEvent; @@ -223,7 +223,7 @@ public static TriState asAdventure(final Tristate state) { // ------------- // org.spongepowered.common.mixin.core.adventure.KeyMixin - public static Key asAdventure(final ResourceLocation key) { + public static Key asAdventure(final Identifier key) { return (Key) (Object) key; } @@ -520,7 +520,7 @@ public static HoverEvent asAdventure(final net.minecraft.network.chat.HoverEv final var stack = si.item(); final Registry itemRegistry = SpongeCommon.vanillaRegistry(Registries.ITEM); yield HoverEvent.showItem( - SpongeAdventure.asAdventure(stack.getItemHolder().unwrap().map(ResourceKey::location, itemRegistry::getKey)), + SpongeAdventure.asAdventure(stack.getItemHolder().unwrap().map(ResourceKey::identifier, itemRegistry::getKey)), stack.getCount(), SpongeAdventure.asAdventure(stack.getComponentsPatch()) ); @@ -785,7 +785,7 @@ public static Map asAdventure(final DataComponentPatch Map map = new HashMap<>(); components.entrySet().forEach(entry -> { - final ResourceLocation key = BuiltInRegistries.DATA_COMPONENT_TYPE.getKey(entry.getKey()); + final Identifier key = BuiltInRegistries.DATA_COMPONENT_TYPE.getKey(entry.getKey()); map.put(SpongeAdventure.asAdventure(key), new SpongeDataComponentValue<>(entry.getValue())); }); return map; @@ -805,18 +805,18 @@ private record SpongeDataComponentValue(Optional value) implements DataCom // Key - public static ResourceLocation asVanilla(final Key key) { - if ((Object) key instanceof ResourceLocation) { - return (ResourceLocation) (Object) key; + public static Identifier asVanilla(final Key key) { + if ((Object) key instanceof Identifier) { + return (Identifier) (Object) key; } - return ResourceLocation.fromNamespaceAndPath(key.namespace(), key.value()); + return Identifier.fromNamespaceAndPath(key.namespace(), key.value()); } - public static @Nullable ResourceLocation asVanillaLocation(final @Nullable Key key) { + public static @Nullable Identifier asVanillaLocation(final @Nullable Key key) { if (key == null) { return null; } - return ResourceLocation.fromNamespaceAndPath(key.namespace(), key.value()); + return Identifier.fromNamespaceAndPath(key.namespace(), key.value()); } public static @Nullable FontDescription asVanillaFontDescription(final @Nullable Key key) { diff --git a/src/main/java/org/spongepowered/common/block/SpongeBlockSnapshot.java b/src/main/java/org/spongepowered/common/block/SpongeBlockSnapshot.java index b619c9f57d0..dc57279948b 100644 --- a/src/main/java/org/spongepowered/common/block/SpongeBlockSnapshot.java +++ b/src/main/java/org/spongepowered/common/block/SpongeBlockSnapshot.java @@ -27,7 +27,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.ProblemReporter; import net.minecraft.world.level.block.Blocks; @@ -283,7 +283,7 @@ public Optional createArchetype() { return Optional.of(SpongeBlockEntityArchetypeBuilder.pooled() .state(this.state()) - .blockEntity((BlockEntityType) SpongeCommon.vanillaRegistry(Registries.BLOCK_ENTITY_TYPE).getOptional(ResourceLocation.tryParse(blockEntityID)).orElse(null)) + .blockEntity((BlockEntityType) SpongeCommon.vanillaRegistry(Registries.BLOCK_ENTITY_TYPE).getOptional(Identifier.tryParse(blockEntityID)).orElse(null)) .blockEntityData(NBTTranslator.INSTANCE.translate(compound)) .build()); } diff --git a/src/main/java/org/spongepowered/common/bridge/RegistryBackedTrackableBridge.java b/src/main/java/org/spongepowered/common/bridge/RegistryBackedTrackableBridge.java index 369e7f9c982..d565c971fa4 100644 --- a/src/main/java/org/spongepowered/common/bridge/RegistryBackedTrackableBridge.java +++ b/src/main/java/org/spongepowered/common/bridge/RegistryBackedTrackableBridge.java @@ -25,7 +25,7 @@ package org.spongepowered.common.bridge; import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.spongepowered.common.config.tracker.NamespacedCategory; import org.spongepowered.common.config.tracker.TrackerCategory; @@ -38,7 +38,7 @@ public interface RegistryBackedTrackableBridge extends TrackableBridge { void bridge$saveTrackerConfig(); default void bridge$refreshTrackerStates() { - final ResourceLocation key = this.bridge$trackerRegistryBacking().getKey((T) (Object) this); + final Identifier key = this.bridge$trackerRegistryBacking().getKey((T) (Object) this); final String namespace = key.getNamespace(); final String path = key.getPath(); final NamespacedCategory namespacedCategory = this.bridge$trackerCategory().namespacedOrCreate(namespace); diff --git a/src/main/java/org/spongepowered/common/bridge/advancements/AdvancementProgressBridge.java b/src/main/java/org/spongepowered/common/bridge/advancements/AdvancementProgressBridge.java index c62d93423b6..d2a9f78d9b6 100644 --- a/src/main/java/org/spongepowered/common/bridge/advancements/AdvancementProgressBridge.java +++ b/src/main/java/org/spongepowered/common/bridge/advancements/AdvancementProgressBridge.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.bridge.advancements; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.PlayerAdvancements; import org.spongepowered.api.advancement.Advancement; import org.spongepowered.common.advancement.criterion.ImplementationBackedCriterionProgress; @@ -35,13 +35,13 @@ public interface AdvancementProgressBridge { Advancement bridge$getAdvancement(); - ResourceLocation bridge$getAdvancementKey(); + Identifier bridge$getAdvancementKey(); PlayerAdvancements bridge$getPlayerAdvancements(); void bridge$setPlayerAdvancements(PlayerAdvancements playerAdvancements); - void bridge$setAdvancementId(ResourceLocation key); + void bridge$setAdvancementId(Identifier key); void bridge$invalidateAchievedState(); diff --git a/src/main/java/org/spongepowered/common/bridge/tags/TagLoaderBridge.java b/src/main/java/org/spongepowered/common/bridge/tags/TagLoaderBridge.java index b21fc88072c..7c4ab0e3aaa 100644 --- a/src/main/java/org/spongepowered/common/bridge/tags/TagLoaderBridge.java +++ b/src/main/java/org/spongepowered/common/bridge/tags/TagLoaderBridge.java @@ -25,8 +25,8 @@ package org.spongepowered.common.bridge.tags; import net.minecraft.core.Registry; +import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagEntry; import net.minecraft.tags.TagLoader; import org.checkerframework.checker.nullness.qual.Nullable; @@ -38,7 +38,7 @@ public interface TagLoaderBridge { void bridge$registryKey(ResourceKey> registryKey); - void bridge$buildingTagKey(@Nullable ResourceLocation key); + void bridge$buildingTagKey(@Nullable Identifier key); default boolean bridge$isAdd(final TagLoader.EntryWithSource entry) { return true; diff --git a/src/main/java/org/spongepowered/common/command/brigadier/SpongeStringReader.java b/src/main/java/org/spongepowered/common/command/brigadier/SpongeStringReader.java index 212210a1187..b569a7998bc 100644 --- a/src/main/java/org/spongepowered/common/command/brigadier/SpongeStringReader.java +++ b/src/main/java/org/spongepowered/common/command/brigadier/SpongeStringReader.java @@ -30,7 +30,7 @@ import net.kyori.adventure.text.Component; import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.TagParser; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.ResourceKey; @@ -147,12 +147,12 @@ public float parseFloat() throws ArgumentParseException { @Override public ResourceKey parseResourceKey() throws ArgumentParseException { - return this.readResourceLocation(null); + return this.readIdentifier(null); } @Override public ResourceKey parseResourceKey(final @NonNull String defaultNamespace) throws ArgumentParseException { - return this.readResourceLocation(defaultNamespace); + return this.readIdentifier(defaultNamespace); } @Override @@ -244,10 +244,10 @@ public void setState(final @NonNull ArgumentReader state) throws IllegalArgument return new ArgumentParseException(errorMessage, inner, this.input(), this.getCursor()); } - private ResourceKey readResourceLocation(final @Nullable String defaultNamespace) throws ArgumentParseException { + private ResourceKey readIdentifier(final @Nullable String defaultNamespace) throws ArgumentParseException { final int i = this.getCursor(); - while (this.canRead() && ResourceLocation.isAllowedInResourceLocation(this.peek())) { + while (this.canRead() && Identifier.isAllowedInIdentifier(this.peek())) { this.skip(); } diff --git a/src/main/java/org/spongepowered/common/command/brigadier/dispatcher/SpongeNodePermissionCache.java b/src/main/java/org/spongepowered/common/command/brigadier/dispatcher/SpongeNodePermissionCache.java index e8072a9dcf4..f85eae9e1b0 100644 --- a/src/main/java/org/spongepowered/common/command/brigadier/dispatcher/SpongeNodePermissionCache.java +++ b/src/main/java/org/spongepowered/common/command/brigadier/dispatcher/SpongeNodePermissionCache.java @@ -27,6 +27,7 @@ import com.mojang.brigadier.tree.CommandNode; import com.mojang.brigadier.tree.RootCommandNode; import net.minecraft.commands.CommandSourceStack; +import net.minecraft.server.permissions.PermissionLevel; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.Sponge; import org.spongepowered.api.command.CommandCause; @@ -65,7 +66,7 @@ public static boolean canUse( && ((CommandSourceStackBridge) source).bridge$getCommandSource() instanceof ServerPlayer) { // If the entity is a player, then we should try to add it anyway. final String permission = supplier.get(); - SpongePermissions.registerPermission(Sponge.server().serviceProvider().permissionService(), permission, 0); + SpongePermissions.registerPermission(Sponge.server().serviceProvider().permissionService(), permission, PermissionLevel.ALL); return ((CommandCause) source).hasPermission(permission); } return result; diff --git a/src/main/java/org/spongepowered/common/command/manager/SpongeCommandCauseFactory.java b/src/main/java/org/spongepowered/common/command/manager/SpongeCommandCauseFactory.java index a22773569cf..7e1ea641a09 100644 --- a/src/main/java/org/spongepowered/common/command/manager/SpongeCommandCauseFactory.java +++ b/src/main/java/org/spongepowered/common/command/manager/SpongeCommandCauseFactory.java @@ -28,6 +28,8 @@ import net.minecraft.commands.CommandSourceStack; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.permissions.LevelBasedPermissionSet; +import net.minecraft.server.permissions.PermissionLevel; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec2; import net.minecraft.world.phys.Vec3; @@ -58,9 +60,9 @@ public final class SpongeCommandCauseFactory implements CommandCause.Factory { final CommandSource iCommandSource = cause.first(CommandSource.class).orElseGet(() -> SpongeCommon.game().systemSubject()); final CommandSourceStack commandSource; - if (iCommandSource instanceof CommandSourceProviderBridge) { + if (iCommandSource instanceof CommandSourceProviderBridge cspb) { // We know about this one so we can create it using the factory method on the source. - commandSource = ((CommandSourceProviderBridge) iCommandSource).bridge$getCommandSource(cause); + commandSource = cspb.bridge$getCommandSource(cause); } else { // try to create a command cause from the given ICommandSource, but as Mojang did not see fit to // put any identifying characteristics on the object, we have to go it alone... @@ -88,7 +90,7 @@ public final class SpongeCommandCauseFactory implements CommandCause.Factory { context.get(EventContextKeys.LOCATION).map(x -> (ServerLevel) x.world()) .orElseGet(() -> locatable == null ? SpongeCommon.server().getLevel(Level.OVERWORLD) : (ServerLevel) locatable.serverLocation().world()), - 4, + LevelBasedPermissionSet.forLevel(PermissionLevel.OWNERS), name, displayName, SpongeCommon.server(), diff --git a/src/main/java/org/spongepowered/common/command/parameter/managed/standard/SpongeServerLocationValueParameter.java b/src/main/java/org/spongepowered/common/command/parameter/managed/standard/SpongeServerLocationValueParameter.java index d17fddc79b0..06cd38eec82 100644 --- a/src/main/java/org/spongepowered/common/command/parameter/managed/standard/SpongeServerLocationValueParameter.java +++ b/src/main/java/org/spongepowered/common/command/parameter/managed/standard/SpongeServerLocationValueParameter.java @@ -34,7 +34,7 @@ import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.arguments.coordinates.Coordinates; import net.minecraft.commands.arguments.coordinates.Vec3Argument; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.phys.Vec3; import org.checkerframework.checker.nullness.qual.NonNull; import org.spongepowered.api.ResourceKey; @@ -87,11 +87,11 @@ private Stream complete(final String currentInput) { final ArgumentReader.Immutable state = reader.immutable(); ServerWorld serverWorld; try { - final ResourceKey resourceLocation = reader.parseResourceKey("minecraft"); + final ResourceKey Identifier = reader.parseResourceKey("minecraft"); serverWorld = SpongeCommon.game().server().worldManager() - .world(resourceLocation) + .world(Identifier) .orElseThrow(() -> reader.createException( - Component.text("Could not get world with key \"" + resourceLocation + "\""))); + Component.text("Could not get world with key \"" + Identifier + "\""))); } catch (final ArgumentParseException e) { final Optional location = cause.location(); if (location.isPresent()) { @@ -127,7 +127,7 @@ public CommandNode createSuggestions(final CommandNode> redirectionNodes, final boolean allowCustomSuggestionsOnTheFirstElement) { - final RequiredArgumentBuilder firstNode = + final RequiredArgumentBuilder firstNode = RequiredArgumentBuilder.argument(key, Constants.Command.RESOURCE_LOCATION_TYPE); if (allowCustomSuggestionsOnTheFirstElement) { firstNode.suggests((context, builder) -> { diff --git a/src/main/java/org/spongepowered/common/config/SpongeGameConfigs.java b/src/main/java/org/spongepowered/common/config/SpongeGameConfigs.java index 492c4da3e9b..daaff9e848c 100644 --- a/src/main/java/org/spongepowered/common/config/SpongeGameConfigs.java +++ b/src/main/java/org/spongepowered/common/config/SpongeGameConfigs.java @@ -130,13 +130,13 @@ public static InheritableConfigHandle load(final DimensionType dime } } - @SuppressWarnings("EqualsBetweenInconvertibleTypes") // ResourceKey is ResourceLocation + @SuppressWarnings("EqualsBetweenInconvertibleTypes") // ResourceKey is Identifier private static @Nullable String getLegacyDimensionAndName(final ResourceKey world) { - if (world.equals(Level.OVERWORLD.location())) { + if (world.equals(Level.OVERWORLD.identifier())) { return "overworld/world"; - } else if (world.equals(Level.END.location())) { + } else if (world.equals(Level.END.identifier())) { return "the_end/DIM1"; - } else if (world.equals(Level.NETHER.location())) { + } else if (world.equals(Level.NETHER.identifier())) { return "nether/DIM-1"; } return null; diff --git a/src/main/java/org/spongepowered/common/data/provider/block/entity/SkullData.java b/src/main/java/org/spongepowered/common/data/provider/block/entity/SkullData.java index 813eb4c98af..c7312c6f97a 100644 --- a/src/main/java/org/spongepowered/common/data/provider/block/entity/SkullData.java +++ b/src/main/java/org/spongepowered/common/data/provider/block/entity/SkullData.java @@ -26,7 +26,7 @@ import net.minecraft.core.component.DataComponentPatch; import net.minecraft.core.component.DataComponents; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.component.ResolvableProfile; import net.minecraft.world.level.block.entity.SkullBlockEntity; import org.spongepowered.api.ResourceKey; @@ -64,7 +64,7 @@ public static void register(final DataProviderRegistrator registrator) { .asMutable(SkullBlockEntityAccessor.class) .create(Keys.NOTE_BLOCK_SOUND) .get(h -> (ResourceKey) (Object) h.accessor$noteBlockSound()) - .set((h, v) -> h.accessor$noteBlockSound((ResourceLocation) (Object) v)) + .set((h, v) -> h.accessor$noteBlockSound((Identifier) (Object) v)) .delete(h -> h.accessor$noteBlockSound(null)) ; } diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/AbstractArrowData.java b/src/main/java/org/spongepowered/common/data/provider/entity/AbstractArrowData.java index df9f20c0230..da8e6203e2b 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/AbstractArrowData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/AbstractArrowData.java @@ -24,10 +24,10 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.projectile.arrow.AbstractArrow; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.type.PickupRule; -import org.spongepowered.common.accessor.world.entity.projectile.AbstractArrowAccessor; +import org.spongepowered.common.accessor.world.entity.projectile.arrow.AbstractArrowAccessor; import org.spongepowered.common.bridge.world.entity.projectile.AbstractArrowBridge; import org.spongepowered.common.data.provider.DataProviderRegistrator; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/AbstractChestedHorseData.java b/src/main/java/org/spongepowered/common/data/provider/entity/AbstractChestedHorseData.java index 58958516445..ee091a26e54 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/AbstractChestedHorseData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/AbstractChestedHorseData.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.animal.horse.AbstractChestedHorse; +import net.minecraft.world.entity.animal.equine.AbstractChestedHorse; import org.spongepowered.api.data.Keys; import org.spongepowered.common.data.provider.DataProviderRegistrator; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/AbstractHorseData.java b/src/main/java/org/spongepowered/common/data/provider/entity/AbstractHorseData.java index 4576e7471f5..96b72955d2f 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/AbstractHorseData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/AbstractHorseData.java @@ -25,9 +25,9 @@ package org.spongepowered.common.data.provider.entity; import net.minecraft.world.entity.EntityReference; -import net.minecraft.world.entity.animal.horse.AbstractHorse; +import net.minecraft.world.entity.animal.equine.AbstractHorse; import org.spongepowered.api.data.Keys; -import org.spongepowered.common.accessor.world.entity.animal.horse.AbstractHorseAccessor; +import org.spongepowered.common.accessor.world.entity.animal.equine.AbstractHorseAccessor; import org.spongepowered.common.bridge.world.entity.animal.horse.AbstractHorseBridge; import org.spongepowered.common.data.provider.DataProviderRegistrator; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/AbstractMinecartData.java b/src/main/java/org/spongepowered/common/data/provider/entity/AbstractMinecartData.java index da6a08db815..64d14454958 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/AbstractMinecartData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/AbstractMinecartData.java @@ -26,12 +26,12 @@ import net.minecraft.core.BlockPos; import net.minecraft.tags.BlockTags; -import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.block.BlockState; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.persistence.DataContentUpdater; -import org.spongepowered.common.accessor.entity.vehicle.AbstractMinecartAccessor; +import org.spongepowered.common.accessor.entity.vehicle.minecart.AbstractMinecartAccessor; import org.spongepowered.common.bridge.world.entity.vehicle.AbstractMinecartBridge; import org.spongepowered.common.data.ByteToBooleanContentUpdater; import org.spongepowered.common.data.SpongeDataManager; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/AbstractVillagerData.java b/src/main/java/org/spongepowered/common/data/provider/entity/AbstractVillagerData.java index 52735629ee3..2befbf97419 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/AbstractVillagerData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/AbstractVillagerData.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.npc.AbstractVillager; +import net.minecraft.world.entity.npc.villager.AbstractVillager; import org.spongepowered.api.data.Keys; import org.spongepowered.api.entity.living.player.Player; import org.spongepowered.common.data.provider.DataProviderRegistrator; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/ArrowData.java b/src/main/java/org/spongepowered/common/data/provider/entity/ArrowData.java index d10b56dbd69..f16ecd6df2e 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/ArrowData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/ArrowData.java @@ -25,13 +25,13 @@ package org.spongepowered.common.data.provider.entity; import net.minecraft.world.effect.MobEffectInstance; -import net.minecraft.world.entity.projectile.Arrow; +import net.minecraft.world.entity.projectile.arrow.Arrow; import net.minecraft.world.item.alchemy.PotionContents; import org.apache.commons.lang3.stream.Streams; import org.jetbrains.annotations.NotNull; import org.spongepowered.api.data.Keys; import org.spongepowered.api.effect.potion.PotionEffect; -import org.spongepowered.common.accessor.world.entity.projectile.ArrowAccessor; +import org.spongepowered.common.accessor.world.entity.projectile.arrow.ArrowAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; import java.util.List; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/BoatData.java b/src/main/java/org/spongepowered/common/data/provider/entity/BoatData.java index f5146dd7d27..df9d50fb6a9 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/BoatData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/BoatData.java @@ -24,12 +24,12 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.vehicle.AbstractBoat; -import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.entity.vehicle.boat.AbstractBoat; +import net.minecraft.world.entity.vehicle.boat.Boat; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.persistence.DataContentUpdater; -import org.spongepowered.common.accessor.world.entity.vehicle.AbstractBoatAccessor; +import org.spongepowered.common.accessor.world.entity.vehicle.boat.AbstractBoatAccessor; import org.spongepowered.common.bridge.world.entity.vehicle.AbstractBoatBridge; import org.spongepowered.common.data.ByteToBooleanContentUpdater; import org.spongepowered.common.data.SpongeDataManager; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/CatData.java b/src/main/java/org/spongepowered/common/data/provider/entity/CatData.java index b8b0442bc8d..cac638ca49b 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/CatData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/CatData.java @@ -25,12 +25,12 @@ package org.spongepowered.common.data.provider.entity; import net.minecraft.core.Holder; -import net.minecraft.world.entity.animal.Cat; -import net.minecraft.world.entity.animal.CatVariant; +import net.minecraft.world.entity.animal.feline.Cat; +import net.minecraft.world.entity.animal.feline.CatVariant; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.type.CatType; import org.spongepowered.api.data.type.DyeColor; -import org.spongepowered.common.accessor.world.entity.animal.CatAccessor; +import org.spongepowered.common.accessor.world.entity.animal.feline.CatAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; import org.spongepowered.common.util.MissingImplementationException; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/ChickenData.java b/src/main/java/org/spongepowered/common/data/provider/entity/ChickenData.java index ddfe38d8e2f..5289fbef991 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/ChickenData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/ChickenData.java @@ -25,7 +25,7 @@ package org.spongepowered.common.data.provider.entity; import net.minecraft.core.registries.Registries; -import net.minecraft.world.entity.animal.Chicken; +import net.minecraft.world.entity.animal.chicken.Chicken; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.type.ChickenVariant; import org.spongepowered.common.data.provider.DataProviderRegistrator; @@ -54,7 +54,7 @@ public static void register(final DataProviderRegistrator registrator) { .get(h -> (ChickenVariant) (Object) h.getVariant().value()) .set((h, v) -> { final var holder = h.level().registryAccess().lookupOrThrow(Registries.CHICKEN_VARIANT) - .wrapAsHolder((net.minecraft.world.entity.animal.ChickenVariant) (Object) v); + .wrapAsHolder((net.minecraft.world.entity.animal.chicken.ChickenVariant) (Object) v); h.setVariant(holder); }); } diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/CommandBlockMinecartData.java b/src/main/java/org/spongepowered/common/data/provider/entity/CommandBlockMinecartData.java index ee00c87f8a6..1065855f7e8 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/CommandBlockMinecartData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/CommandBlockMinecartData.java @@ -25,7 +25,7 @@ package org.spongepowered.common.data.provider.entity; import net.minecraft.network.chat.Component; -import net.minecraft.world.entity.vehicle.MinecartCommandBlock; +import net.minecraft.world.entity.vehicle.minecart.MinecartCommandBlock; import org.spongepowered.api.data.Keys; import org.spongepowered.common.accessor.world.level.BaseCommandBlockAccessor; import org.spongepowered.common.adventure.SpongeAdventure; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/CowData.java b/src/main/java/org/spongepowered/common/data/provider/entity/CowData.java index a86cfcaf9d4..017f734d8b9 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/CowData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/CowData.java @@ -25,7 +25,7 @@ package org.spongepowered.common.data.provider.entity; import net.minecraft.core.registries.Registries; -import net.minecraft.world.entity.animal.Cow; +import net.minecraft.world.entity.animal.cow.Cow; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.type.CowVariant; import org.spongepowered.common.data.provider.DataProviderRegistrator; @@ -43,7 +43,7 @@ public static void register(final DataProviderRegistrator registrator) { .get(h -> (CowVariant) (Object) h.getVariant().value()) .set((h, v) -> { final var holder = h.level().registryAccess().lookupOrThrow(Registries.COW_VARIANT) - .wrapAsHolder((net.minecraft.world.entity.animal.CowVariant) (Object) v); + .wrapAsHolder((net.minecraft.world.entity.animal.cow.CowVariant) (Object) v); h.setVariant(holder); }); } diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/DamagingProjectileData.java b/src/main/java/org/spongepowered/common/data/provider/entity/DamagingProjectileData.java index 637e43bf59b..3ee14260859 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/DamagingProjectileData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/DamagingProjectileData.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.projectile.AbstractHurtingProjectile; +import net.minecraft.world.entity.projectile.hurtingprojectile.AbstractHurtingProjectile; import org.spongepowered.api.data.Keys; import org.spongepowered.common.data.provider.DataProviderRegistrator; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/DolphinData.java b/src/main/java/org/spongepowered/common/data/provider/entity/DolphinData.java index be838cdebb3..4a5aa9d00a2 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/DolphinData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/DolphinData.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.animal.Dolphin; +import net.minecraft.world.entity.animal.dolphin.Dolphin; import org.spongepowered.api.data.Keys; import org.spongepowered.common.data.provider.DataProviderRegistrator; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/EntityData.java b/src/main/java/org/spongepowered/common/data/provider/entity/EntityData.java index 215697af97b..14cbe1bc57c 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/EntityData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/EntityData.java @@ -170,8 +170,8 @@ public static void register(final DataProviderRegistrator registrator) { .get(Entity::isCustomNameVisible) .set(Entity::setCustomNameVisible) .create(Keys.IS_FLYING) - .get(h -> h.hasImpulse) - .set((h, v) -> h.hasImpulse = v) + .get(h -> h.needsSync) + .set((h, v) -> h.needsSync = v) .supports(h -> !(h instanceof Player)) .create(Keys.IS_GLOWING) .get(Entity::hasGlowingTag) diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/EvokerData.java b/src/main/java/org/spongepowered/common/data/provider/entity/EvokerData.java index 50ba45c0ba3..050aa8e4cc6 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/EvokerData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/EvokerData.java @@ -26,7 +26,7 @@ import org.spongepowered.api.data.Keys; import org.spongepowered.api.entity.living.animal.Sheep; -import org.spongepowered.common.accessor.world.entity.monster.EvokerAccessor; +import org.spongepowered.common.accessor.world.entity.monster.illager.EvokerAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; public final class EvokerData { diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/FoxData.java b/src/main/java/org/spongepowered/common/data/provider/entity/FoxData.java index 1325ffea14b..163203e22ed 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/FoxData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/FoxData.java @@ -25,10 +25,10 @@ package org.spongepowered.common.data.provider.entity; import net.minecraft.world.entity.EntityReference; -import net.minecraft.world.entity.animal.Fox; +import net.minecraft.world.entity.animal.fox.Fox; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.type.FoxType; -import org.spongepowered.common.accessor.world.entity.animal.FoxAccessor; +import org.spongepowered.common.accessor.world.entity.animal.fox.FoxAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; import java.util.Optional; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/FurnaceMinecartData.java b/src/main/java/org/spongepowered/common/data/provider/entity/FurnaceMinecartData.java index c0b85677851..dc257ecd559 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/FurnaceMinecartData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/FurnaceMinecartData.java @@ -25,7 +25,7 @@ package org.spongepowered.common.data.provider.entity; import org.spongepowered.api.data.Keys; -import org.spongepowered.common.accessor.world.entity.vehicle.MinecartFurnaceAccessor; +import org.spongepowered.common.accessor.world.entity.vehicle.minecart.MinecartFurnaceAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; public final class FurnaceMinecartData { diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/HorseData.java b/src/main/java/org/spongepowered/common/data/provider/entity/HorseData.java index 2f40374ac79..38a8585dadb 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/HorseData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/HorseData.java @@ -25,13 +25,13 @@ package org.spongepowered.common.data.provider.entity; import net.minecraft.core.MappedRegistry; -import net.minecraft.world.entity.animal.horse.Horse; +import net.minecraft.world.entity.animal.equine.Horse; import org.spongepowered.api.Sponge; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.type.HorseColor; import org.spongepowered.api.data.type.HorseStyle; import org.spongepowered.api.registry.RegistryTypes; -import org.spongepowered.common.accessor.world.entity.animal.horse.HorseAccessor; +import org.spongepowered.common.accessor.world.entity.animal.equine.HorseAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; public final class HorseData { diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/IronGolemData.java b/src/main/java/org/spongepowered/common/data/provider/entity/IronGolemData.java index 53441f770ff..83f3a585789 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/IronGolemData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/IronGolemData.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.animal.IronGolem; +import net.minecraft.world.entity.animal.golem.IronGolem; import org.spongepowered.api.data.Keys; import org.spongepowered.common.data.provider.DataProviderRegistrator; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/LlamaData.java b/src/main/java/org/spongepowered/common/data/provider/entity/LlamaData.java index 9ef0758d1ca..21245664a2d 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/LlamaData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/LlamaData.java @@ -24,10 +24,10 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.animal.horse.Llama; +import net.minecraft.world.entity.animal.equine.Llama; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.type.LlamaType; -import org.spongepowered.common.accessor.world.entity.animal.horse.LlamaAccessor; +import org.spongepowered.common.accessor.world.entity.animal.equine.LlamaAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; public final class LlamaData { diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/MooshroomData.java b/src/main/java/org/spongepowered/common/data/provider/entity/MooshroomData.java index e340e1f6774..e9cb7e00fa0 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/MooshroomData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/MooshroomData.java @@ -24,10 +24,10 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.animal.MushroomCow; +import net.minecraft.world.entity.animal.cow.MushroomCow; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.type.MooshroomType; -import org.spongepowered.common.accessor.world.entity.animal.MooshroomAccessor; +import org.spongepowered.common.accessor.world.entity.animal.cow.MooshroomAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; public final class MooshroomData { diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/OcelotData.java b/src/main/java/org/spongepowered/common/data/provider/entity/OcelotData.java index 636404e2d3a..361b5167a1f 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/OcelotData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/OcelotData.java @@ -25,7 +25,7 @@ package org.spongepowered.common.data.provider.entity; import org.spongepowered.api.data.Keys; -import org.spongepowered.common.accessor.world.entity.animal.OcelotAccessor; +import org.spongepowered.common.accessor.world.entity.animal.feline.OcelotAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; public final class OcelotData { diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/PaintingData.java b/src/main/java/org/spongepowered/common/data/provider/entity/PaintingData.java index 33b1260e63a..e8e1fce95e8 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/PaintingData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/PaintingData.java @@ -29,15 +29,15 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.network.ServerPlayerConnection; -import net.minecraft.world.entity.decoration.Painting; -import net.minecraft.world.entity.decoration.PaintingVariant; +import net.minecraft.world.entity.decoration.painting.Painting; +import net.minecraft.world.entity.decoration.painting.PaintingVariant; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.type.ArtType; import org.spongepowered.common.SpongeCommon; import org.spongepowered.common.accessor.server.level.ChunkMapAccessor; import org.spongepowered.common.accessor.server.level.ChunkMap_TrackedEntityAccessor; import org.spongepowered.common.accessor.world.entity.decoration.HangingEntityAccessor; -import org.spongepowered.common.accessor.world.entity.decoration.PaintingAccessor; +import org.spongepowered.common.accessor.world.entity.decoration.painting.PaintingAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; public final class PaintingData { diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/PandaData.java b/src/main/java/org/spongepowered/common/data/provider/entity/PandaData.java index 108618c2361..ebc827147ff 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/PandaData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/PandaData.java @@ -24,10 +24,10 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.animal.Panda; +import net.minecraft.world.entity.animal.panda.Panda; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.type.PandaGene; -import org.spongepowered.common.accessor.world.entity.animal.PandaAccessor; +import org.spongepowered.common.accessor.world.entity.animal.panda.PandaAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; import org.spongepowered.common.util.SpongeTicks; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/ParrotData.java b/src/main/java/org/spongepowered/common/data/provider/entity/ParrotData.java index b3b80751a6d..7c88008a879 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/ParrotData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/ParrotData.java @@ -24,10 +24,10 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.animal.Parrot; +import net.minecraft.world.entity.animal.parrot.Parrot; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.type.ParrotType; -import org.spongepowered.common.accessor.world.entity.animal.ParrotAccessor; +import org.spongepowered.common.accessor.world.entity.animal.parrot.ParrotAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; public final class ParrotData { diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/PigData.java b/src/main/java/org/spongepowered/common/data/provider/entity/PigData.java index 539849f5758..c95735b4a19 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/PigData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/PigData.java @@ -26,13 +26,13 @@ import net.minecraft.core.registries.Registries; import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.entity.animal.Pig; -import net.minecraft.world.entity.animal.PigVariant; +import net.minecraft.world.entity.animal.pig.Pig; +import net.minecraft.world.entity.animal.pig.PigVariant; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.type.PigType; -import org.spongepowered.common.accessor.world.entity.animal.PigAccessor; +import org.spongepowered.common.accessor.world.entity.animal.pig.PigAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; public final class PigData { diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/PillagerData.java b/src/main/java/org/spongepowered/common/data/provider/entity/PillagerData.java index 63165c7b34d..8976d5740be 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/PillagerData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/PillagerData.java @@ -24,9 +24,9 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.monster.Pillager; +import net.minecraft.world.entity.monster.illager.Pillager; import org.spongepowered.api.data.Keys; -import org.spongepowered.common.accessor.world.entity.monster.PillagerAccessor; +import org.spongepowered.common.accessor.world.entity.monster.illager.PillagerAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; public final class PillagerData { diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/PolarBearData.java b/src/main/java/org/spongepowered/common/data/provider/entity/PolarBearData.java index 3bdbffef841..095dc447729 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/PolarBearData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/PolarBearData.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.animal.PolarBear; +import net.minecraft.world.entity.animal.polarbear.PolarBear; import org.spongepowered.api.data.Keys; import org.spongepowered.common.data.provider.DataProviderRegistrator; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/PotionData.java b/src/main/java/org/spongepowered/common/data/provider/entity/PotionData.java index b800abdf95d..f0f35429966 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/PotionData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/PotionData.java @@ -26,7 +26,7 @@ import net.minecraft.core.component.DataComponents; import net.minecraft.world.effect.MobEffectInstance; -import net.minecraft.world.entity.projectile.AbstractThrownPotion; +import net.minecraft.world.entity.projectile.throwableitemprojectile.AbstractThrownPotion; import net.minecraft.world.item.alchemy.PotionContents; import org.apache.commons.lang3.stream.Streams; import org.spongepowered.api.data.Keys; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/PufferfishData.java b/src/main/java/org/spongepowered/common/data/provider/entity/PufferfishData.java index a637ed6ce87..2fa89155b3b 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/PufferfishData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/PufferfishData.java @@ -24,9 +24,9 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.animal.Pufferfish; +import net.minecraft.world.entity.animal.fish.Pufferfish; import org.spongepowered.api.data.Keys; -import org.spongepowered.common.accessor.world.entity.animal.PufferfishAccessor; +import org.spongepowered.common.accessor.world.entity.animal.fish.PufferfishAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; public final class PufferfishData { diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/RabbitData.java b/src/main/java/org/spongepowered/common/data/provider/entity/RabbitData.java index ddf8e108a5d..54ee3619aca 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/RabbitData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/RabbitData.java @@ -24,10 +24,10 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.animal.Rabbit; +import net.minecraft.world.entity.animal.rabbit.Rabbit; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.type.RabbitType; -import org.spongepowered.common.accessor.world.entity.animal.RabbitAccessor; +import org.spongepowered.common.accessor.world.entity.animal.rabbit.RabbitAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; public final class RabbitData { diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/SalmonData.java b/src/main/java/org/spongepowered/common/data/provider/entity/SalmonData.java index bbb56f00e43..2e55974f395 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/SalmonData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/SalmonData.java @@ -25,7 +25,7 @@ package org.spongepowered.common.data.provider.entity; import net.minecraft.core.component.DataComponents; -import net.minecraft.world.entity.animal.Salmon; +import net.minecraft.world.entity.animal.fish.Salmon; import org.spongepowered.api.data.Keys; import org.spongepowered.common.data.provider.DataProviderRegistrator; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/SpellcastingIllagerData.java b/src/main/java/org/spongepowered/common/data/provider/entity/SpellcastingIllagerData.java index 6cad9021fe5..8f515a26359 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/SpellcastingIllagerData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/SpellcastingIllagerData.java @@ -24,10 +24,10 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.monster.SpellcasterIllager; +import net.minecraft.world.entity.monster.illager.SpellcasterIllager; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.type.SpellType; -import org.spongepowered.common.accessor.world.entity.monster.SpellcasterIllagerAccessor; +import org.spongepowered.common.accessor.world.entity.monster.illager.SpellcasterIllagerAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; public final class SpellcastingIllagerData { diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/SpiderData.java b/src/main/java/org/spongepowered/common/data/provider/entity/SpiderData.java index c66df4b8cf4..871ae19ed64 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/SpiderData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/SpiderData.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.monster.Spider; +import net.minecraft.world.entity.monster.spider.Spider; import org.spongepowered.api.data.Keys; import org.spongepowered.common.data.provider.DataProviderRegistrator; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/ThrowableItemProjectileData.java b/src/main/java/org/spongepowered/common/data/provider/entity/ThrowableItemProjectileData.java index 605b675f489..6e140cd74b6 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/ThrowableItemProjectileData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/ThrowableItemProjectileData.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.projectile.ThrowableItemProjectile; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrowableItemProjectile; import org.spongepowered.api.data.Keys; import org.spongepowered.common.data.provider.DataProviderRegistrator; import org.spongepowered.common.item.util.ItemStackUtil; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/TraderLlamaData.java b/src/main/java/org/spongepowered/common/data/provider/entity/TraderLlamaData.java index 79bfc39773f..05b2b1c43b5 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/TraderLlamaData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/TraderLlamaData.java @@ -28,7 +28,7 @@ import org.spongepowered.api.data.Keys; import org.spongepowered.api.util.Ticks; import org.spongepowered.common.accessor.world.entity.MobAccessor; -import org.spongepowered.common.accessor.world.entity.animal.horse.TraderLlamaAccessor; +import org.spongepowered.common.accessor.world.entity.animal.equine.TraderLlamaAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; import org.spongepowered.common.util.SpongeTicks; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/TropicalFishData.java b/src/main/java/org/spongepowered/common/data/provider/entity/TropicalFishData.java index 204556b1a10..5ec5bf46e69 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/TropicalFishData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/TropicalFishData.java @@ -24,11 +24,11 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.animal.TropicalFish; +import net.minecraft.world.entity.animal.fish.TropicalFish; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.type.DyeColor; import org.spongepowered.api.data.type.TropicalFishShape; -import org.spongepowered.common.accessor.world.entity.animal.TropicalFishAccessor; +import org.spongepowered.common.accessor.world.entity.animal.fish.TropicalFishAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; public final class TropicalFishData { diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/TurtleData.java b/src/main/java/org/spongepowered/common/data/provider/entity/TurtleData.java index 8a9f62cca76..8a969650f69 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/TurtleData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/TurtleData.java @@ -24,9 +24,9 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.animal.Turtle; +import net.minecraft.world.entity.animal.turtle.Turtle; import org.spongepowered.api.data.Keys; -import org.spongepowered.common.accessor.world.entity.animal.TurtleAccessor; +import org.spongepowered.common.accessor.world.entity.animal.turtle.TurtleAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; import org.spongepowered.common.util.VecHelper; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/VillagerData.java b/src/main/java/org/spongepowered/common/data/provider/entity/VillagerData.java index cc7a7f11909..071ac8731bc 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/VillagerData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/VillagerData.java @@ -25,9 +25,9 @@ package org.spongepowered.common.data.provider.entity; import net.minecraft.core.registries.Registries; -import net.minecraft.world.entity.npc.Villager; -import net.minecraft.world.entity.npc.VillagerProfession; -import net.minecraft.world.entity.npc.WanderingTrader; +import net.minecraft.world.entity.npc.villager.Villager; +import net.minecraft.world.entity.npc.villager.VillagerProfession; +import net.minecraft.world.entity.npc.wanderingtrader.WanderingTrader; import net.minecraft.world.item.trading.MerchantOffer; import net.minecraft.world.item.trading.MerchantOffers; import org.spongepowered.api.data.Keys; @@ -35,7 +35,7 @@ import org.spongepowered.api.data.type.VillagerType; import org.spongepowered.api.item.merchant.TradeOffer; import org.spongepowered.common.SpongeCommon; -import org.spongepowered.common.accessor.world.entity.npc.AbstractVillagerAccessor; +import org.spongepowered.common.accessor.world.entity.npc.villager.AbstractVillagerAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; import org.spongepowered.common.util.SpongeTicks; @@ -80,7 +80,7 @@ public static void register(final DataProviderRegistrator registrator) { .get(h -> (VillagerType) (Object) h.getVillagerData().type()) .set((h, v) -> { final var villagerType = SpongeCommon.vanillaRegistry(Registries.VILLAGER_TYPE) - .wrapAsHolder((net.minecraft.world.entity.npc.VillagerType) (Object) v); + .wrapAsHolder((net.minecraft.world.entity.npc.villager.VillagerType) (Object) v); h.setVillagerData(h.getVillagerData().withType(villagerType)); }) .create(Keys.IS_UNHAPPY) diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/VindicatorData.java b/src/main/java/org/spongepowered/common/data/provider/entity/VindicatorData.java index 4c442dfaa6b..7ad33e0f335 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/VindicatorData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/VindicatorData.java @@ -25,7 +25,7 @@ package org.spongepowered.common.data.provider.entity; import org.spongepowered.api.data.Keys; -import org.spongepowered.common.accessor.world.entity.monster.VindicatorAccessor; +import org.spongepowered.common.accessor.world.entity.monster.illager.VindicatorAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; public final class VindicatorData { diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/ZombieData.java b/src/main/java/org/spongepowered/common/data/provider/entity/ZombieData.java index 713841f069c..1b4d42c074e 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/ZombieData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/ZombieData.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.data.provider.entity; -import net.minecraft.world.entity.monster.Zombie; +import net.minecraft.world.entity.monster.zombie.Zombie; import org.spongepowered.api.data.Keys; import org.spongepowered.common.data.provider.DataProviderRegistrator; diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/ZombieVillagerData.java b/src/main/java/org/spongepowered/common/data/provider/entity/ZombieVillagerData.java index 990da40d732..6315e33ca84 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/ZombieVillagerData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/ZombieVillagerData.java @@ -25,8 +25,8 @@ package org.spongepowered.common.data.provider.entity; import net.minecraft.core.registries.Registries; -import net.minecraft.world.entity.monster.ZombieVillager; -import net.minecraft.world.entity.npc.VillagerProfession; +import net.minecraft.world.entity.monster.zombie.ZombieVillager; +import net.minecraft.world.entity.npc.villager.VillagerProfession; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.type.ProfessionType; import org.spongepowered.api.data.type.VillagerType; @@ -54,7 +54,7 @@ public static void register(final DataProviderRegistrator registrator) { .create(Keys.VILLAGER_TYPE) .get(h -> (VillagerType) (Object) h.getVillagerData().type()) .set((h, v) -> { - final var villagerType = SpongeCommon.vanillaRegistry(Registries.VILLAGER_TYPE).wrapAsHolder((net.minecraft.world.entity.npc.VillagerType) (Object) v); + final var villagerType = SpongeCommon.vanillaRegistry(Registries.VILLAGER_TYPE).wrapAsHolder((net.minecraft.world.entity.npc.villager.VillagerType) (Object) v); h.setVillagerData(h.getVillagerData().withType(villagerType)); }); } diff --git a/src/main/java/org/spongepowered/common/data/provider/entity/ZombifiedPiglinData.java b/src/main/java/org/spongepowered/common/data/provider/entity/ZombifiedPiglinData.java index d0867fcdd3c..292afe3a555 100644 --- a/src/main/java/org/spongepowered/common/data/provider/entity/ZombifiedPiglinData.java +++ b/src/main/java/org/spongepowered/common/data/provider/entity/ZombifiedPiglinData.java @@ -25,7 +25,7 @@ package org.spongepowered.common.data.provider.entity; import org.spongepowered.api.data.Keys; -import org.spongepowered.common.accessor.world.entity.monster.ZombifiedPiglinAccessor; +import org.spongepowered.common.accessor.world.entity.monster.zombie.ZombifiedPiglinAccessor; import org.spongepowered.common.data.provider.DataProviderRegistrator; import java.util.SplittableRandom; @@ -42,7 +42,7 @@ public static void register(final DataProviderRegistrator registrator) { .create(Keys.ANGER_LEVEL) .get(ZombifiedPiglinAccessor::accessor$remainingPersistentAngerTime) .set(ZombifiedPiglinAccessor::accessor$remainingPersistentAngerTime) - .resetOnDelete(400 + new SplittableRandom().nextInt(400)); + .resetOnDelete(() -> (long)(400 + new SplittableRandom().nextInt(400))); } // @formatter:on } diff --git a/src/main/java/org/spongepowered/common/data/provider/item/stack/ArmorItemStackData.java b/src/main/java/org/spongepowered/common/data/provider/item/stack/ArmorItemStackData.java index 6d216f2a99a..c39fe7b1e24 100644 --- a/src/main/java/org/spongepowered/common/data/provider/item/stack/ArmorItemStackData.java +++ b/src/main/java/org/spongepowered/common/data/provider/item/stack/ArmorItemStackData.java @@ -57,7 +57,7 @@ public static void register(final DataProviderRegistrator registrator) { return null; } return equippable.assetId() - .map(rl -> (ResourceKey) (Object) rl.location()) + .map(rl -> (ResourceKey) (Object) rl.identifier()) .flatMap(rk -> RegistryTypes.ARMOR_MATERIAL.get().findEntry(rk)) .map(RegistryEntry::value) .orElse(null); diff --git a/src/main/java/org/spongepowered/common/data/provider/item/stack/BlockTypeItemStackData.java b/src/main/java/org/spongepowered/common/data/provider/item/stack/BlockTypeItemStackData.java index f065fb38278..c211b0513b3 100644 --- a/src/main/java/org/spongepowered/common/data/provider/item/stack/BlockTypeItemStackData.java +++ b/src/main/java/org/spongepowered/common/data/provider/item/stack/BlockTypeItemStackData.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.data.provider.item.stack; -import net.minecraft.advancements.critereon.BlockPredicate; +import net.minecraft.advancements.criterion.BlockPredicate; import net.minecraft.core.Holder; import net.minecraft.core.HolderSet; import net.minecraft.core.component.DataComponentType; diff --git a/src/main/java/org/spongepowered/common/data/provider/item/stack/ItemStackData.java b/src/main/java/org/spongepowered/common/data/provider/item/stack/ItemStackData.java index fbb402d3f4b..c26c7d9207d 100644 --- a/src/main/java/org/spongepowered/common/data/provider/item/stack/ItemStackData.java +++ b/src/main/java/org/spongepowered/common/data/provider/item/stack/ItemStackData.java @@ -28,7 +28,7 @@ import net.minecraft.core.component.DataComponentPatch; import net.minecraft.core.component.DataComponents; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.sounds.SoundEvents; import net.minecraft.tags.DamageTypeTags; import net.minecraft.util.StringUtil; @@ -206,7 +206,7 @@ public static void register(final DataProviderRegistrator registrator) { .delete(h -> h.remove(DataComponents.MAX_STACK_SIZE)) .create(Keys.MODEL) .get(stack -> (ResourceKey) (Object) stack.get(DataComponents.ITEM_MODEL)) - .set((stack, model) -> stack.set(DataComponents.ITEM_MODEL, (ResourceLocation) (Object) model)) + .set((stack, model) -> stack.set(DataComponents.ITEM_MODEL, (Identifier) (Object) model)) .create(Keys.ITEM_DURABILITY) .get(stack -> stack.getMaxDamage() - stack.getDamageValue()) .set((stack, durability) -> stack.setDamageValue(stack.getMaxDamage() - durability)) @@ -298,7 +298,7 @@ public static void register(final DataProviderRegistrator registrator) { if (resist == null) { return false; } - return resist.types().location().equals(DamageTypes.IN_FIRE.location()); + return resist.types().location().equals(DamageTypes.IN_FIRE.identifier()); }) .set((h, value) -> { if (value) { @@ -333,7 +333,7 @@ public static void register(final DataProviderRegistrator registrator) { h.remove(DataComponents.USE_COOLDOWN); return; } - h.set(DataComponents.USE_COOLDOWN, new UseCooldown(1, Optional.of((ResourceLocation) (Object) value))); + h.set(DataComponents.USE_COOLDOWN, new UseCooldown(1, Optional.of((Identifier) (Object) value))); }) .deleteAndGet(ItemStackData::deleteAndTransactUseCooldown) .create(Keys.COOLDOWN) @@ -371,7 +371,7 @@ public static void register(final DataProviderRegistrator registrator) { .deleteAndGet(ItemStackData::deleteAndTransactUseCooldown) .create(Keys.TOOLTIP_STYLE) .get(h -> (ResourceKey) (Object) h.get(DataComponents.TOOLTIP_STYLE)) - .set((h, v) -> h.set(DataComponents.TOOLTIP_STYLE, (ResourceLocation) (Object) v)) + .set((h, v) -> h.set(DataComponents.TOOLTIP_STYLE, (Identifier) (Object) v)) .delete(h -> h.remove(DataComponents.TOOLTIP_STYLE)) .create(Keys.WEAPON_DAMAGE_PER_ATTACK) .get(h -> { diff --git a/src/main/java/org/spongepowered/common/data/provider/item/stack/SkullItemStackData.java b/src/main/java/org/spongepowered/common/data/provider/item/stack/SkullItemStackData.java index 78059b24ce8..8b9fb1255d0 100644 --- a/src/main/java/org/spongepowered/common/data/provider/item/stack/SkullItemStackData.java +++ b/src/main/java/org/spongepowered/common/data/provider/item/stack/SkullItemStackData.java @@ -25,7 +25,7 @@ package org.spongepowered.common.data.provider.item.stack; import net.minecraft.core.component.DataComponents; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.PlayerHeadItem; import net.minecraft.world.item.component.ResolvableProfile; @@ -56,7 +56,7 @@ public static void register(final DataProviderRegistrator registrator) { .supports(h -> h.getItem() instanceof PlayerHeadItem) .create(Keys.NOTE_BLOCK_SOUND) .get(h -> (ResourceKey) (Object) h.get(DataComponents.NOTE_BLOCK_SOUND)) - .set((h, v) -> h.set(DataComponents.NOTE_BLOCK_SOUND, (ResourceLocation) (Object) v)) + .set((h, v) -> h.set(DataComponents.NOTE_BLOCK_SOUND, (Identifier) (Object) v)) .delete(h -> h.remove(DataComponents.NOTE_BLOCK_SOUND)) ; } diff --git a/src/main/java/org/spongepowered/common/data/provider/map/MapInfoData.java b/src/main/java/org/spongepowered/common/data/provider/map/MapInfoData.java index fab0ec7361e..983f9a6af8f 100644 --- a/src/main/java/org/spongepowered/common/data/provider/map/MapInfoData.java +++ b/src/main/java/org/spongepowered/common/data/provider/map/MapInfoData.java @@ -25,7 +25,7 @@ package org.spongepowered.common.data.provider.map; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.saveddata.maps.MapItemSavedData; import org.apache.logging.log4j.LogManager; import org.spongepowered.api.ResourceKey; @@ -92,10 +92,10 @@ public static void register(final DataProviderRegistrator registrator) { return null; } - return (ResourceKey) (Object) mapData.dimension.location(); + return (ResourceKey) (Object) mapData.dimension.identifier(); }) .set((mapData, key) -> { - ((MapItemSavedDataAccessor) mapData).accessor$dimension(net.minecraft.resources.ResourceKey.create(Registries.DIMENSION, (ResourceLocation) (Object) key)); + ((MapItemSavedDataAccessor) mapData).accessor$dimension(net.minecraft.resources.ResourceKey.create(Registries.DIMENSION, (Identifier) (Object) key)); mapData.setDirty(); }) .asMutable(MapItemSavedDataBridge.class) diff --git a/src/main/java/org/spongepowered/common/data/provider/world/ServerLevelDataProvider.java b/src/main/java/org/spongepowered/common/data/provider/world/ServerLevelDataProvider.java new file mode 100644 index 00000000000..7141a9c7cdc --- /dev/null +++ b/src/main/java/org/spongepowered/common/data/provider/world/ServerLevelDataProvider.java @@ -0,0 +1,29 @@ +/* + * This file is part of Sponge, licensed under the MIT License (MIT). + * + * Copyright (c) SpongePowered + * Copyright (c) contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.spongepowered.common.data.provider.world; + +public class ServerLevelDataProvider { + +} diff --git a/src/main/java/org/spongepowered/common/data/provider/world/WorldPropertiesData.java b/src/main/java/org/spongepowered/common/data/provider/world/WorldPropertiesData.java index 2969efd9ec0..467d744bbbd 100644 --- a/src/main/java/org/spongepowered/common/data/provider/world/WorldPropertiesData.java +++ b/src/main/java/org/spongepowered/common/data/provider/world/WorldPropertiesData.java @@ -27,6 +27,7 @@ import net.minecraft.core.GlobalPos; import net.minecraft.world.level.GameType; import net.minecraft.world.level.dimension.DimensionType; +import net.minecraft.world.level.gamerules.GameRules; import net.minecraft.world.level.storage.LevelData; import net.minecraft.world.level.storage.PrimaryLevelData; import net.minecraft.world.level.storage.ServerLevelData; @@ -87,7 +88,7 @@ public static void register(final DataProviderRegistrator registrator) { .create(Keys.WORLD_TYPE) .get(h -> (WorldType) (Object) h.bridge$dimensionType()) .create(Keys.PVP) - .get(h -> h.bridge$pvp().orElseGet(() -> SpongeCommon.server().isPvpAllowed())) + .get(h -> h.bridge$pvp().orElseGet(() -> SpongeCommon.server().getWorldData().getGameRules().get(GameRules.PVP))) .create(Keys.SERIALIZATION_BEHAVIOR) .get(h -> h.bridge$serializationBehavior().orElse(SerializationBehavior.AUTOMATIC)) .create(Keys.VIEW_DISTANCE) diff --git a/src/main/java/org/spongepowered/common/data/provider/world/WorldTypeData.java b/src/main/java/org/spongepowered/common/data/provider/world/WorldTypeData.java index 70b27307881..3eec96adf17 100644 --- a/src/main/java/org/spongepowered/common/data/provider/world/WorldTypeData.java +++ b/src/main/java/org/spongepowered/common/data/provider/world/WorldTypeData.java @@ -25,22 +25,19 @@ package org.spongepowered.common.data.provider.world; import net.minecraft.util.valueproviders.IntProvider; +import net.minecraft.world.attribute.BedRule; +import net.minecraft.world.attribute.EnvironmentAttributes; import net.minecraft.world.level.dimension.DimensionType; import org.checkerframework.checker.nullness.qual.Nullable; -import org.spongepowered.api.ResourceKey; import org.spongepowered.api.block.BlockType; import org.spongepowered.api.data.Keys; import org.spongepowered.api.tag.Tag; -import org.spongepowered.api.util.MinecraftDayTime; import org.spongepowered.api.util.Range; import org.spongepowered.api.world.WorldTypeEffect; import org.spongepowered.common.accessor.world.level.dimension.DimensionTypeAccessor; import org.spongepowered.common.bridge.world.level.dimension.DimensionTypeBridge; import org.spongepowered.common.data.provider.DataProviderRegistrator; import org.spongepowered.common.registry.provider.DimensionEffectProvider; -import org.spongepowered.common.util.SpongeMinecraftDayTime; - -import java.util.OptionalLong; public final class WorldTypeData { @@ -54,9 +51,9 @@ public static void register(final DataProviderRegistrator registrator) { .create(Keys.WORLD_TYPE_EFFECT) .get(WorldTypeData::worldTypeEffect) .create(Keys.SCORCHING) - .get(DimensionType::ultraWarm) + .get(d -> d.attributes().applyModifier(EnvironmentAttributes.WATER_EVAPORATES, false)) .create(Keys.NATURAL_WORLD_TYPE) - .get(DimensionType::natural) + .get(d -> d.attributes().contains(EnvironmentAttributes.BED_RULE)) .create(Keys.COORDINATE_MULTIPLIER) .get(DimensionType::coordinateScale) .create(Keys.HAS_SKYLIGHT) @@ -64,17 +61,17 @@ public static void register(final DataProviderRegistrator registrator) { .create(Keys.HAS_CEILING) .get(DimensionType::hasCeiling) .create(Keys.PIGLIN_SAFE) - .get(DimensionType::piglinSafe) + .get(d -> d.attributes().applyModifier(EnvironmentAttributes.NETHER_PORTAL_SPAWNS_PIGLINS, false)) .create(Keys.BEDS_USABLE) - .get(DimensionType::bedWorks) + .get(d -> d.attributes().applyModifier(EnvironmentAttributes.BED_RULE, BedRule.CAN_SLEEP_WHEN_DARK).explodes()) .create(Keys.RESPAWN_ANCHOR_USABLE) - .get(DimensionType::respawnAnchorWorks) + .get(d -> d.attributes().applyModifier(EnvironmentAttributes.RESPAWN_ANCHOR_WORKS, false)) .create(Keys.INFINIBURN) .get(dimensionType -> (Tag) (Object) dimensionType.infiniburn()) .create(Keys.WORLD_FLOOR) .get(DimensionType::minY) .create(Keys.HAS_RAIDS) - .get(DimensionType::hasRaids) + .get(d -> d.attributes().applyModifier(EnvironmentAttributes.CAN_START_RAID, true)) .create(Keys.WORLD_HEIGHT) .get(DimensionType::height) .create(Keys.WORLD_LOGICAL_HEIGHT) @@ -86,8 +83,6 @@ public static void register(final DataProviderRegistrator registrator) { .asImmutable(DimensionTypeAccessor.class) .create(Keys.AMBIENT_LIGHTING) .get(DimensionTypeAccessor::accessor$ambientLight) - .create(Keys.FIXED_TIME) - .get(WorldTypeData::fixedTime) .asImmutable(DimensionTypeBridge.class) .create(Keys.CREATE_DRAGON_FIGHT) .get(DimensionTypeBridge::bridge$createDragonFight) @@ -101,20 +96,11 @@ private static Range lightRange(IntProvider provider) { } private static WorldTypeEffect worldTypeEffect(final DimensionType type) { - final var key = (ResourceKey) (Object) type.effectsLocation(); - @Nullable final WorldTypeEffect effect = DimensionEffectProvider.INSTANCE.get(key); + @Nullable final WorldTypeEffect effect = DimensionEffectProvider.INSTANCE.get(type.skybox()); if (effect == null) { - throw new IllegalStateException(String.format("The effect '%s' has not been registered!", key)); + throw new IllegalStateException(String.format("The effect '%s' has not been registered!", type.skybox())); } return effect; } - @Nullable - private static MinecraftDayTime fixedTime(final DimensionTypeAccessor accessor) { - final OptionalLong fixedTime = accessor.accessor$fixedTime(); - if (!fixedTime.isPresent()) { - return null; - } - return new SpongeMinecraftDayTime(fixedTime.getAsLong()); - } } diff --git a/src/main/java/org/spongepowered/common/data/provider/world/biome/BiomeData.java b/src/main/java/org/spongepowered/common/data/provider/world/biome/BiomeData.java index 30a3bffb721..8d5fa86f272 100644 --- a/src/main/java/org/spongepowered/common/data/provider/world/biome/BiomeData.java +++ b/src/main/java/org/spongepowered/common/data/provider/world/biome/BiomeData.java @@ -26,6 +26,8 @@ import net.minecraft.core.Holder; import net.minecraft.util.random.Weighted; +import net.minecraft.world.attribute.AmbientSounds; +import net.minecraft.world.attribute.EnvironmentAttributes; import net.minecraft.world.entity.MobCategory; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.BiomeGenerationSettings; @@ -88,27 +90,42 @@ public static void register(final DataProviderRegistrator registrator) { .create(Keys.NATURAL_SPAWNER_COST) .get(BiomeData::naturalSpawnerCost) .create(Keys.FOG_COLOR) - .get(h -> Color.ofRgb(h.getSpecialEffects().getFogColor())) + .get(h -> { + final var value = h.getAttributes().applyModifier(EnvironmentAttributes.FOG_COLOR, EnvironmentAttributes.FOG_COLOR.defaultValue()); + return Color.ofRgb(value); + }) .create(Keys.WATER_COLOR) - .get(h -> Color.ofRgb(h.getSpecialEffects().getWaterColor())) + .get(h -> Color.ofRgb(h.getSpecialEffects().waterColor())) .create(Keys.WATER_FOG_COLOR) - .get(h -> Color.ofRgb(h.getSpecialEffects().getWaterFogColor())) + .get(h -> { + final var value = h.getAttributes().applyModifier(EnvironmentAttributes.WATER_FOG_COLOR, EnvironmentAttributes.WATER_FOG_COLOR.defaultValue()); + return Color.ofRgb(value); + }) .create(Keys.SKY_COLOR) - .get(h -> Color.ofRgb(h.getSpecialEffects().getSkyColor())) + .get(h -> { + final var value = h.getAttributes().applyModifier(EnvironmentAttributes.SKY_COLOR, EnvironmentAttributes.SKY_COLOR.defaultValue()); + return Color.ofRgb(value); + }) .create(Keys.FOLIAGE_COLOR) - .get(h -> h.getSpecialEffects().getFoliageColorOverride().map(Color::ofRgb).orElse(null)) + .get(h -> h.getSpecialEffects().foliageColorOverride().map(Color::ofRgb).orElse(null)) .create(Keys.GRASS_COLOR) - .get(h -> h.getSpecialEffects().getGrassColorOverride().map(Color::ofRgb).orElse(null)) + .get(h -> h.getSpecialEffects().grassColorOverride().map(Color::ofRgb).orElse(null)) .create(Keys.GRASS_COLOR_MODIFIER) - .get(h -> (GrassColorModifier) (Object) h.getSpecialEffects().getGrassColorModifier()) + .get(h -> (GrassColorModifier) (Object) h.getSpecialEffects().grassColorModifier()) .create(Keys.BACKGROUND_MUSIC) - .get(h -> h.getSpecialEffects().getBackgroundMusic().map(a -> a.unwrap()).flatMap(e -> e.stream().findFirst().map(Weighted::value)).map(SoundConfig.BackgroundMusic.class::cast).orElse(null)) + .get(h -> { + final var value = h.getAttributes().applyModifier(EnvironmentAttributes.BACKGROUND_MUSIC, EnvironmentAttributes.BACKGROUND_MUSIC.defaultValue()); + return (SoundConfig.BackgroundMusic) (Object) value.defaultMusic().orElse(null); + }) .create(Keys.AMBIENT_ADDITIONAL_SOUND) - .get(h -> h.getSpecialEffects().getAmbientAdditionsSettings().map(SoundConfig.Additional.class::cast).orElse(null)) + .get(h -> { + final var value = h.getAttributes().applyModifier(EnvironmentAttributes.AMBIENT_SOUNDS, EnvironmentAttributes.AMBIENT_SOUNDS.defaultValue()); + return (SoundConfig.Additional) (Object) value.additions().stream().findFirst().orElse(null); + }) .create(Keys.AMBIENT_MOOD) - .get(h -> h.getSpecialEffects().getAmbientMoodSettings().map(SoundConfig.Mood.class::cast).orElse(null)) + .get(h -> h.getAttributes().applyModifier(EnvironmentAttributes.AMBIENT_SOUNDS, AmbientSounds.EMPTY).mood().map(SoundConfig.Mood.class::cast).orElse(null)) .create(Keys.AMBIENT_PARTICLE) - .get(h -> h.getSpecialEffects().getAmbientParticleSettings().map(ParticleConfig.class::cast).orElse(null)) + .get(h -> h.getAttributes().applyModifier(EnvironmentAttributes.AMBIENT_PARTICLES,List.of()).stream().findFirst().map(ParticleConfig.class::cast).orElse(null)) .asImmutable(BiomeAccessor.class) .create(Keys.HUMIDITY) .get(h -> (double) h.accessor$climateSettings().downfall()) diff --git a/src/main/java/org/spongepowered/common/data/type/SpongeArtTypeBuilder.java b/src/main/java/org/spongepowered/common/data/type/SpongeArtTypeBuilder.java index 154de888652..fe9da7ba032 100644 --- a/src/main/java/org/spongepowered/common/data/type/SpongeArtTypeBuilder.java +++ b/src/main/java/org/spongepowered/common/data/type/SpongeArtTypeBuilder.java @@ -24,8 +24,8 @@ */ package org.spongepowered.common.data.type; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.decoration.PaintingVariant; +import net.minecraft.resources.Identifier; +import net.minecraft.world.entity.decoration.painting.PaintingVariant; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.data.type.ArtType; @@ -38,7 +38,7 @@ public final class SpongeArtTypeBuilder implements ArtType.Builder { private int width; private int height; - @Nullable private ResourceLocation assetId; + @Nullable private Identifier assetId; public SpongeArtTypeBuilder() { this.reset(); @@ -53,7 +53,7 @@ public ArtType.Builder dimensions(final int width, final int height) { @Override public ArtType.Builder asset(final ResourceKey assetId) { - this.assetId = (ResourceLocation) (Object) assetId; + this.assetId = (Identifier) (Object) assetId; return this; } diff --git a/src/main/java/org/spongepowered/common/effect/sound/SpongeSoundBuilder.java b/src/main/java/org/spongepowered/common/effect/sound/SpongeSoundBuilder.java index 9b99d2bfb6c..16258e5ef91 100644 --- a/src/main/java/org/spongepowered/common/effect/sound/SpongeSoundBuilder.java +++ b/src/main/java/org/spongepowered/common/effect/sound/SpongeSoundBuilder.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.effect.sound; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.spongepowered.api.effect.sound.SoundType; import org.spongepowered.common.accessor.sounds.SoundEventAccessor; import org.spongepowered.common.util.AbstractResourceKeyedBuilder; @@ -33,6 +33,6 @@ public final class SpongeSoundBuilder extends AbstractResourceKeyedBuilder resolveEvent(final @NonNull Sound sound) { - final ResourceLocation soundKey = SpongeAdventure.asVanilla(Objects.requireNonNull(sound, "sound").name()); + final Identifier soundKey = SpongeAdventure.asVanilla(Objects.requireNonNull(sound, "sound").name()); final var soundEventRegistry = SpongeCommon.vanillaRegistry(Registries.SOUND_EVENT); final SoundEvent event = soundEventRegistry.getOptional(soundKey) .orElseGet(() -> SoundEvent.createVariableRangeEvent(soundKey)); diff --git a/src/main/java/org/spongepowered/common/entity/EntityUtil.java b/src/main/java/org/spongepowered/common/entity/EntityUtil.java index 047ecb6a936..e5fb1382c26 100644 --- a/src/main/java/org/spongepowered/common/entity/EntityUtil.java +++ b/src/main/java/org/spongepowered/common/entity/EntityUtil.java @@ -26,7 +26,7 @@ import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.Mth; import net.minecraft.util.random.WeightedList; import net.minecraft.world.entity.Entity; @@ -183,9 +183,9 @@ public static boolean isUntargetable(final Entity from, final Entity target) { public static EntityArchetype toArchetype(final SpawnData logic) { final var tag = logic.entityToSpawn(); - final var resourceLocation = tag.getString(Constants.Entity.ENTITY_TYPE_ID); + final var identifier = tag.getString(Constants.Entity.ENTITY_TYPE_ID); final var entityTypeRegistry = SpongeCommon.vanillaRegistry(Registries.ENTITY_TYPE); - final var type = resourceLocation.flatMap(location -> entityTypeRegistry.getOptional(ResourceLocation.parse(location))) + final var type = identifier.flatMap(location -> entityTypeRegistry.getOptional(Identifier.parse(location))) .map(org.spongepowered.api.entity.EntityType.class::cast) .orElse(EntityTypes.PIG.get()); @@ -211,11 +211,11 @@ public static WeightedTable toWeightedArchetypes(final Weighted for (final var weightedEntity : spawnData.unwrap()) { final CompoundTag nbt = weightedEntity.value().entityToSpawn(); - final Optional resourceLocation = nbt.getString(Constants.Entity.ENTITY_TYPE_ID); - if (resourceLocation.isEmpty()) { + final Optional identifier = nbt.getString(Constants.Entity.ENTITY_TYPE_ID); + if (identifier.isEmpty()) { continue; } - final var mcType = SpongeCommon.vanillaRegistry(Registries.ENTITY_TYPE).getOptional(ResourceLocation.parse(resourceLocation.get())); + final var mcType = SpongeCommon.vanillaRegistry(Registries.ENTITY_TYPE).getOptional(Identifier.parse(identifier.get())); final var type = mcType.map(org.spongepowered.api.entity.EntityType.class::cast).orElse(EntityTypes.PIG.get()); final EntityArchetype archetype = SpongeEntityArchetypeBuilder.pooled() diff --git a/src/main/java/org/spongepowered/common/entity/SpongeEntityArchetype.java b/src/main/java/org/spongepowered/common/entity/SpongeEntityArchetype.java index 516b2caeef7..c6788d69ae0 100644 --- a/src/main/java/org/spongepowered/common/entity/SpongeEntityArchetype.java +++ b/src/main/java/org/spongepowered/common/entity/SpongeEntityArchetype.java @@ -28,7 +28,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.DoubleTag; import net.minecraft.nbt.ListTag; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntitySpawnReason; @@ -134,7 +134,7 @@ public Optional apply(final ServerLocation final org.spongepowered.api.world.server.ServerWorld spongeWorld = location.world(); final ServerLevel level = (ServerLevel) spongeWorld; - final ResourceLocation key = net.minecraft.world.entity.EntityType.getKey((net.minecraft.world.entity.EntityType) this.type); + final Identifier key = net.minecraft.world.entity.EntityType.getKey((net.minecraft.world.entity.EntityType) this.type); if (key == null) { return Optional.empty(); } diff --git a/src/main/java/org/spongepowered/common/entity/SpongeEntityTypes.java b/src/main/java/org/spongepowered/common/entity/SpongeEntityTypes.java index 84e34cbcdc1..170008b6ac8 100644 --- a/src/main/java/org/spongepowered/common/entity/SpongeEntityTypes.java +++ b/src/main/java/org/spongepowered/common/entity/SpongeEntityTypes.java @@ -26,8 +26,8 @@ import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; +import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; import org.spongepowered.common.entity.living.human.HumanEntity; @@ -40,7 +40,7 @@ public class SpongeEntityTypes { .sized(0.6F, 1.8F) .clientTrackingRange(Constants.Entity.Player.TRACKING_RANGE) .updateInterval(2) - .build(ResourceKey.create(Registries.ENTITY_TYPE, ResourceLocation.fromNamespaceAndPath("sponge", "human"))); + .build(ResourceKey.create(Registries.ENTITY_TYPE, Identifier.fromNamespaceAndPath("sponge", "human"))); public static void register(Registry> registry) { Registry.register(registry, HumanEntity.KEY, SpongeEntityTypes.HUMAN); diff --git a/src/main/java/org/spongepowered/common/entity/ai/goal/builtin/creature/horse/SpongeRunAroundLikeCrazyAIBuilder.java b/src/main/java/org/spongepowered/common/entity/ai/goal/builtin/creature/horse/SpongeRunAroundLikeCrazyAIBuilder.java index c4e1bcd75af..a024c9fd3fa 100644 --- a/src/main/java/org/spongepowered/common/entity/ai/goal/builtin/creature/horse/SpongeRunAroundLikeCrazyAIBuilder.java +++ b/src/main/java/org/spongepowered/common/entity/ai/goal/builtin/creature/horse/SpongeRunAroundLikeCrazyAIBuilder.java @@ -60,6 +60,6 @@ public RunAroundLikeCrazyGoal.Builder reset() { @Override public RunAroundLikeCrazyGoal build(HorseLike owner) { Objects.requireNonNull(owner); - return (RunAroundLikeCrazyGoal) new net.minecraft.world.entity.ai.goal.RunAroundLikeCrazyGoal((net.minecraft.world.entity.animal.horse.Horse) owner, this.speed); + return (RunAroundLikeCrazyGoal) new net.minecraft.world.entity.ai.goal.RunAroundLikeCrazyGoal((net.minecraft.world.entity.animal.equine.Horse) owner, this.speed); } } diff --git a/src/main/java/org/spongepowered/common/entity/attribute/SpongeAttributeModifierBuilder.java b/src/main/java/org/spongepowered/common/entity/attribute/SpongeAttributeModifierBuilder.java index 5b29661f430..d5950911bb1 100644 --- a/src/main/java/org/spongepowered/common/entity/attribute/SpongeAttributeModifierBuilder.java +++ b/src/main/java/org/spongepowered/common/entity/attribute/SpongeAttributeModifierBuilder.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.entity.attribute; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.entity.attribute.AttributeModifier; import org.spongepowered.api.entity.attribute.AttributeOperation; @@ -35,14 +35,14 @@ public final class SpongeAttributeModifierBuilder implements AttributeModifier.B // Use a random id private AttributeOperation operation; private double amount; - private ResourceLocation key; + private Identifier key; public SpongeAttributeModifierBuilder() { } @Override public AttributeModifier.Builder key(final ResourceKey key) { - this.key = (ResourceLocation) (Object) key; + this.key = (Identifier) (Object) key; return this; } diff --git a/src/main/java/org/spongepowered/common/entity/living/human/HumanEntity.java b/src/main/java/org/spongepowered/common/entity/living/human/HumanEntity.java index 5ce21e78282..1e562c7e0d6 100644 --- a/src/main/java/org/spongepowered/common/entity/living/human/HumanEntity.java +++ b/src/main/java/org/spongepowered/common/entity/living/human/HumanEntity.java @@ -43,8 +43,8 @@ import net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket; import net.minecraft.network.protocol.game.ClientboundRemoveEntitiesPacket; import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerEntity; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -66,7 +66,7 @@ import net.minecraft.world.entity.ai.goal.WaterAvoidingRandomStrollGoal; import net.minecraft.world.entity.monster.RangedAttackMob; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.entity.projectile.Arrow; +import net.minecraft.world.entity.projectile.arrow.Arrow; import net.minecraft.world.item.ArrowItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -110,7 +110,7 @@ import java.util.stream.Stream; public final class HumanEntity extends PathfinderMob implements TeamMember, RangedAttackMob { - public static final ResourceKey> KEY = ResourceKey.create(Registries.ENTITY_TYPE, ResourceLocation.fromNamespaceAndPath("sponge", "human")); + public static final ResourceKey> KEY = ResourceKey.create(Registries.ENTITY_TYPE, Identifier.fromNamespaceAndPath("sponge", "human")); public static AttributeSupplier createAttributes() { return Mob.createMobAttributes() diff --git a/src/main/java/org/spongepowered/common/entity/player/LoginPermissions.java b/src/main/java/org/spongepowered/common/entity/player/LoginPermissions.java index ba9b7cfbcb6..89687b2a5a9 100644 --- a/src/main/java/org/spongepowered/common/entity/player/LoginPermissions.java +++ b/src/main/java/org/spongepowered/common/entity/player/LoginPermissions.java @@ -24,9 +24,11 @@ */ package org.spongepowered.common.entity.player; +import net.minecraft.server.permissions.PermissionLevel; + public final class LoginPermissions { - public static final int BYPASS_WHITELIST_LEVEL = 1; + public static final PermissionLevel BYPASS_WHITELIST_LEVEL = PermissionLevel.MODERATORS; public static final String BYPASS_WHITELIST_PERMISSION = "minecraft.login.bypass-whitelist"; diff --git a/src/main/java/org/spongepowered/common/entity/player/SpongeUserData.java b/src/main/java/org/spongepowered/common/entity/player/SpongeUserData.java index 21f11f430cd..8847ce8821d 100644 --- a/src/main/java/org/spongepowered/common/entity/player/SpongeUserData.java +++ b/src/main/java/org/spongepowered/common/entity/player/SpongeUserData.java @@ -31,7 +31,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtAccounter; import net.minecraft.nbt.NbtIo; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.ProblemReporter; import net.minecraft.util.datafix.DataFixTypes; @@ -121,7 +121,7 @@ public final class SpongeUserData implements Identifiable, DataSerializable, Bed private final Map spawnLocations = Maps.newHashMap(); - private ResourceKey worldKey = (ResourceKey) (Object) Level.OVERWORLD.location(); + private ResourceKey worldKey = (ResourceKey) (Object) Level.OVERWORLD.identifier(); private double x; private double y; private double z; @@ -229,7 +229,7 @@ public void readCompound(final CompoundTag compound) { this.reset(); this.compound = compound; - compound.read(Constants.Sponge.World.WORLD_KEY, ResourceLocation.CODEC) + compound.read(Constants.Sponge.World.WORLD_KEY, Identifier.CODEC) .ifPresent(key -> this.worldKey = (ResourceKey) (Object) key); final var rotation = compound.read(Constants.Entity.ENTITY_ROTATION, Rotations.CODEC).orElse(new Rotations(0, 0, 0)); diff --git a/src/main/java/org/spongepowered/common/entity/projectile/ProjectileUtil.java b/src/main/java/org/spongepowered/common/entity/projectile/ProjectileUtil.java index ac10e3be464..83883aaf397 100644 --- a/src/main/java/org/spongepowered/common/entity/projectile/ProjectileUtil.java +++ b/src/main/java/org/spongepowered/common/entity/projectile/ProjectileUtil.java @@ -28,18 +28,18 @@ import net.minecraft.core.Direction; import net.minecraft.util.Mth; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.animal.horse.Llama; +import net.minecraft.world.entity.animal.equine.Llama; import net.minecraft.world.entity.decoration.ArmorStand; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.projectile.FireworkRocketEntity; import net.minecraft.world.entity.projectile.FishingHook; -import net.minecraft.world.entity.projectile.LargeFireball; import net.minecraft.world.entity.projectile.ThrowableProjectile; -import net.minecraft.world.entity.projectile.ThrownEgg; -import net.minecraft.world.entity.projectile.ThrownEnderpearl; -import net.minecraft.world.entity.projectile.ThrownExperienceBottle; -import net.minecraft.world.entity.projectile.ThrownLingeringPotion; -import net.minecraft.world.entity.projectile.ThrownSplashPotion; +import net.minecraft.world.entity.projectile.hurtingprojectile.LargeFireball; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrownEgg; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrownEnderpearl; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrownExperienceBottle; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrownLingeringPotion; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrownSplashPotion; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.entity.DispenserBlockEntity; @@ -179,7 +179,7 @@ static

Optional

doLaunch(final World extent, final P p @Override protected Optional createProjectile(final LivingEntity source, final ServerLocation loc) { - final var arrow = new net.minecraft.world.entity.projectile.Arrow(source.level(), source, new ItemStack(this.item), source.getWeaponItem()); + final var arrow = new net.minecraft.world.entity.projectile.arrow.Arrow(source.level(), source, new ItemStack(this.item), source.getWeaponItem()); arrow.shoot(source.getXRot(), source.getYRot(), 0.0F, 3.0F, 0); return ProjectileUtil.doLaunch(loc.world(), (Arrow) arrow); } @@ -189,7 +189,7 @@ protected Optional createProjectile(final LivingEntity source, final Serv @Override protected Optional createProjectile(final LivingEntity source, final ServerLocation loc) { - final var arrow = new net.minecraft.world.entity.projectile.SpectralArrow(source.level(), source, new ItemStack(this.item), source.getWeaponItem()); + final var arrow = new net.minecraft.world.entity.projectile.arrow.SpectralArrow(source.level(), source, new ItemStack(this.item), source.getWeaponItem()); arrow.shoot(source.getXRot(), source.getYRot(), 0.0F, 3.0F, 0); return ProjectileUtil.doLaunch(loc.world(), (SpectralArrow) arrow); } @@ -209,7 +209,7 @@ protected Optional createProjectile(final LivingEntity source, final Server @Override protected Optional createProjectile(final LivingEntity source, final ServerLocation loc) { final net.minecraft.world.phys.Vec3 lookVec = source.getViewVector(1); - final var fireball = new net.minecraft.world.entity.projectile.SmallFireball(source.level(), source, lookVec.scale(4)); + final var fireball = new net.minecraft.world.entity.projectile.hurtingprojectile.SmallFireball(source.level(), source, lookVec.scale(4)); fireball.setPos(fireball.getX(), fireball.getY() + source.getEyeHeight(), fireball.getZ()); return ProjectileUtil.doLaunch(loc.world(), (SmallFireball) fireball); } @@ -227,7 +227,7 @@ protected Optional createProjectile(final LivingEntity source, f @Override protected Optional createProjectile(final LivingEntity source, final ServerLocation loc) { - final net.minecraft.world.entity.projectile.Snowball snowball = new net.minecraft.world.entity.projectile.Snowball( + final var snowball = new net.minecraft.world.entity.projectile.throwableitemprojectile.Snowball( source.level(), source, new ItemStack(Items.SNOWBALL)); snowball.shoot(source.getXRot(), source.getYRot(), 0.0F, 1.5F, 0); return ProjectileUtil.doLaunch(loc.world(), (Snowball) snowball); @@ -285,7 +285,7 @@ public Optional createProjectile(final ProjectileSource sourc @Override protected Optional createProjectile(final LivingEntity source, final ServerLocation loc) { final net.minecraft.world.phys.Vec3 lookVec = source.getViewVector(1); - final var skull = new net.minecraft.world.entity.projectile.WitherSkull(source.level(), source, lookVec.scale(4)); + final var skull = new net.minecraft.world.entity.projectile.hurtingprojectile.WitherSkull(source.level(), source, lookVec.scale(4)); skull.setPos(skull.getX(), skull.getY() + source.getEyeHeight(), skull.getZ()); return ProjectileUtil.doLaunch(loc.world(), (WitherSkull) skull); } @@ -350,7 +350,7 @@ public Optional createProjectile(final ProjectileSource source, @Override protected Optional createProjectile(final LivingEntity source, final ServerLocation loc) { final net.minecraft.world.phys.Vec3 lookVec = source.getViewVector(1); - final var fireball = new net.minecraft.world.entity.projectile.DragonFireball(source.level(), source, lookVec.scale(4)); + final var fireball = new net.minecraft.world.entity.projectile.hurtingprojectile.DragonFireball(source.level(), source, lookVec.scale(4)); fireball.setPos(fireball.getX(), fireball.getY() + source.getEyeHeight(), fireball.getZ()); return ProjectileUtil.doLaunch(loc.world(), (DragonFireball) fireball); } diff --git a/src/main/java/org/spongepowered/common/event/SpongeCommonEventFactory.java b/src/main/java/org/spongepowered/common/event/SpongeCommonEventFactory.java index 0c93973febf..0baf6706938 100644 --- a/src/main/java/org/spongepowered/common/event/SpongeCommonEventFactory.java +++ b/src/main/java/org/spongepowered/common/event/SpongeCommonEventFactory.java @@ -36,12 +36,12 @@ import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.GameRules; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.DirectionalBlock; import net.minecraft.world.level.block.entity.JukeboxBlockEntity; import net.minecraft.world.level.block.piston.PistonStructureResolver; +import net.minecraft.world.level.gamerules.GameRules; import net.minecraft.world.level.saveddata.maps.MapId; import net.minecraft.world.level.saveddata.maps.MapIndex; import net.minecraft.world.level.saveddata.maps.MapItemSavedData; @@ -515,7 +515,7 @@ public static DestructEntityEvent.Death callDestructEntityEventDeath(final Livin final DestructEntityEvent.Death event = SpongeEventFactory.createDestructEntityEventDeath(frame.currentCause(), originalChannel, Optional.of(originalChannel), originalMessage, originalMessage, (Living) entity, - ((ServerLevel) entity.level()).getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY), messageCancelled); + ((ServerLevel) entity.level()).getGameRules().get(GameRules.KEEP_INVENTORY), messageCancelled); SpongeCommon.post(event); return event; diff --git a/src/main/java/org/spongepowered/common/event/inventory/InventoryEventFactory.java b/src/main/java/org/spongepowered/common/event/inventory/InventoryEventFactory.java index fde99c753bf..4808d06264a 100644 --- a/src/main/java/org/spongepowered/common/event/inventory/InventoryEventFactory.java +++ b/src/main/java/org/spongepowered/common/event/inventory/InventoryEventFactory.java @@ -31,10 +31,10 @@ import net.minecraft.world.MenuProvider; import net.minecraft.world.SimpleMenuProvider; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.animal.horse.AbstractHorse; +import net.minecraft.world.entity.animal.equine.AbstractHorse; import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.entity.npc.Villager; -import net.minecraft.world.entity.npc.WanderingTrader; +import net.minecraft.world.entity.npc.villager.Villager; +import net.minecraft.world.entity.npc.wanderingtrader.WanderingTrader; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.AnvilMenu; diff --git a/src/main/java/org/spongepowered/common/event/tracking/PhasePrinter.java b/src/main/java/org/spongepowered/common/event/tracking/PhasePrinter.java index 9f4458ba773..f3e3883ef7f 100644 --- a/src/main/java/org/spongepowered/common/event/tracking/PhasePrinter.java +++ b/src/main/java/org/spongepowered/common/event/tracking/PhasePrinter.java @@ -25,7 +25,7 @@ package org.spongepowered.common.event.tracking; import net.minecraft.core.BlockPos; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.block.Block; import org.apache.logging.log4j.Level; @@ -152,7 +152,7 @@ static void printExceptionSpawningEntity(final PhaseTracker tracker, final Phase } static void printNullSourceBlockWithTile( - final BlockPos pos, final Block blockIn, final BlockPos otherPos, final ResourceLocation type, final boolean useTile, + final BlockPos pos, final Block blockIn, final BlockPos otherPos, final Identifier type, final boolean useTile, final NullPointerException e) { final PhaseTracker instance = PhaseTracker.getInstance(); final PrettyPrinter printer = new PrettyPrinter(60).add("Null Source Block on TileEntity!").centre().hr() diff --git a/src/main/java/org/spongepowered/common/event/tracking/PhaseTracker.java b/src/main/java/org/spongepowered/common/event/tracking/PhaseTracker.java index a69a929ef3b..eae4de2cdbf 100644 --- a/src/main/java/org/spongepowered/common/event/tracking/PhaseTracker.java +++ b/src/main/java/org/spongepowered/common/event/tracking/PhaseTracker.java @@ -29,7 +29,7 @@ import com.google.common.collect.Maps; import com.google.common.collect.Queues; import net.minecraft.core.BlockPos; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.LevelAccessor; @@ -179,9 +179,9 @@ public static Block validateBlockForNeighborNotification(final ServerLevel world .map(BlockEntity::getType) .orElse(null); if (type != null) { - @Nullable ResourceLocation id = BlockEntityType.getKey(type); + @Nullable Identifier id = BlockEntityType.getKey(type); if (id == null) { - id = ResourceLocation.parse(source.getClass().getCanonicalName()); + id = Identifier.parse(source.getClass().getCanonicalName()); } final Map autoFixedTiles = trackerConfig.autoFixNullSourceBlockProvidingBlockEntities; final boolean contained = autoFixedTiles.containsKey(type.toString()); diff --git a/src/main/java/org/spongepowered/common/event/tracking/UnwindingState.java b/src/main/java/org/spongepowered/common/event/tracking/UnwindingState.java index 76c80f4ebcb..20ccedb4e1d 100644 --- a/src/main/java/org/spongepowered/common/event/tracking/UnwindingState.java +++ b/src/main/java/org/spongepowered/common/event/tracking/UnwindingState.java @@ -90,7 +90,7 @@ public void unwind(final UnwindingPhaseContext context) { @Override public Supplier attemptWorldKey(UnwindingPhaseContext context) { - final Optional> o = context.getSource(Entity.class).map(s -> () -> (ResourceKey) (Object) s.level().dimension().location()); + final Optional> o = context.getSource(Entity.class).map(s -> () -> (ResourceKey) (Object) s.level().dimension().identifier()); return o.orElseThrow(() -> new IllegalStateException("Expected to be ticking an entity!")); } diff --git a/src/main/java/org/spongepowered/common/event/tracking/context/transaction/effect/UpdateOrCreateNewTileEntityPostPlacementEffect.java b/src/main/java/org/spongepowered/common/event/tracking/context/transaction/effect/UpdateOrCreateNewTileEntityPostPlacementEffect.java index 985cea97629..62b3d3cab8d 100644 --- a/src/main/java/org/spongepowered/common/event/tracking/context/transaction/effect/UpdateOrCreateNewTileEntityPostPlacementEffect.java +++ b/src/main/java/org/spongepowered/common/event/tracking/context/transaction/effect/UpdateOrCreateNewTileEntityPostPlacementEffect.java @@ -61,7 +61,7 @@ public static UpdateOrCreateNewTileEntityPostPlacementEffect getInstance() { var maybeNewTileEntity = chunk.getBlockEntity(oldState.pos(), LevelChunk.EntityCreationType.CHECK); if (maybeNewTileEntity != null && !maybeNewTileEntity.isValidBlockState(newState)) { LevelChunkAccessor.accessor$LOGGER().warn( - "Found mismatched block entity @ {}: type = {}, state = {}", pos, maybeNewTileEntity.getType().builtInRegistryHolder().key().location(), newState + "Found mismatched block entity @ {}: type = {}, state = {}", pos, maybeNewTileEntity.getType().builtInRegistryHolder().key().identifier(), newState ); chunk.removeBlockEntity(pos); maybeNewTileEntity = null; diff --git a/src/main/java/org/spongepowered/common/event/tracking/context/transaction/inventory/ContainerBasedTransaction.java b/src/main/java/org/spongepowered/common/event/tracking/context/transaction/inventory/ContainerBasedTransaction.java index 3afcf2c413a..99a164311f1 100644 --- a/src/main/java/org/spongepowered/common/event/tracking/context/transaction/inventory/ContainerBasedTransaction.java +++ b/src/main/java/org/spongepowered/common/event/tracking/context/transaction/inventory/ContainerBasedTransaction.java @@ -273,7 +273,7 @@ private void handleCrafting(final Player player, final ClickContainerEvent event SpongeEventFactory.createCraftItemEventCraft(PhaseTracker.getInstance().currentCause(), ContainerUtil.fromNative(this.menu), craftedItem, this.craftingInventory, event.cursorTransaction(), Optional.ofNullable(this.onTakeRecipe).map(r -> (CraftingRecipe) r.value()), - Optional.ofNullable(this.onTakeRecipe).map(r -> (ResourceKey) (Object) r.id().location()), + Optional.ofNullable(this.onTakeRecipe).map(r -> (ResourceKey) (Object) r.id().identifier()), Optional.of(this.craftingInventory.result()), event.transactions()); SpongeCommon.post(craftEvent); this.handleEventResults(player, craftEvent); @@ -290,7 +290,7 @@ private void handleCraftingPreview(final Player player, final ClickContainerEven final SlotTransaction previewTransaction = this.getPreviewTransaction(this.craftingInventory.result(), event.transactions()); final var recipe = sp.level().recipeAccess().getRecipeFor(RecipeType.CRAFTING, this.craftingContainer.asCraftInput(), player.level()); final CraftItemEvent.Preview previewEvent = SpongeEventFactory.createCraftItemEventPreview(event.cause(), (Container) this.menu, this.craftingInventory, event.cursorTransaction(), previewTransaction, - recipe.map(RecipeHolder::value).map(CraftingRecipe.class::cast), recipe.map(r -> (ResourceKey) (Object) r.id().location()), Optional.empty(), event.transactions()); + recipe.map(RecipeHolder::value).map(CraftingRecipe.class::cast), recipe.map(r -> (ResourceKey) (Object) r.id().identifier()), Optional.empty(), event.transactions()); SpongeCommon.post(previewEvent); this.handleEventResults(player, previewEvent); diff --git a/src/main/java/org/spongepowered/common/event/tracking/context/transaction/inventory/CraftingPreviewTransaction.java b/src/main/java/org/spongepowered/common/event/tracking/context/transaction/inventory/CraftingPreviewTransaction.java index 7b488255d1d..daec1f0974d 100644 --- a/src/main/java/org/spongepowered/common/event/tracking/context/transaction/inventory/CraftingPreviewTransaction.java +++ b/src/main/java/org/spongepowered/common/event/tracking/context/transaction/inventory/CraftingPreviewTransaction.java @@ -80,7 +80,7 @@ Optional createInventoryEvent(final List s final CraftItemEvent.Preview event = SpongeEventFactory.createCraftItemEventPreview(currentCause, ContainerUtil.fromNative(this.menu), this.craftingInventory, new Transaction<>(cursor, cursor), previewTransaction, recipe.map(RecipeHolder::value).map(CraftingRecipe.class::cast), - recipe.map(r -> (ResourceKey) (Object) r.id().location()), + recipe.map(r -> (ResourceKey) (Object) r.id().identifier()), Optional.empty(), slotTransactions); return Optional.of(event); } diff --git a/src/main/java/org/spongepowered/common/event/tracking/context/transaction/inventory/PlaceRecipeTransaction.java b/src/main/java/org/spongepowered/common/event/tracking/context/transaction/inventory/PlaceRecipeTransaction.java index 58be64b551a..1e6febe2a6f 100644 --- a/src/main/java/org/spongepowered/common/event/tracking/context/transaction/inventory/PlaceRecipeTransaction.java +++ b/src/main/java/org/spongepowered/common/event/tracking/context/transaction/inventory/PlaceRecipeTransaction.java @@ -77,13 +77,13 @@ Optional createInventoryEvent( event = SpongeEventFactory.createClickContainerEventRecipeAll(cause, (Container) this.menu, this.craftingInventory, cursorTransaction, preview, Optional.of(this.recipe).map(RecipeHolder::value).map(CraftingRecipe.class::cast), - Optional.of(this.recipe).map(r -> (ResourceKey) (Object) r.id().location()), + Optional.of(this.recipe).map(r -> (ResourceKey) (Object) r.id().identifier()), Optional.empty(), slotTransactions); } else { event = SpongeEventFactory.createClickContainerEventRecipeSingle(cause, (Container) this.menu, this.craftingInventory, cursorTransaction, preview, Optional.of(this.recipe).map(RecipeHolder::value).map(CraftingRecipe.class::cast), - Optional.of(this.recipe).map(r -> (ResourceKey) (Object) r.id().location()), + Optional.of(this.recipe).map(r -> (ResourceKey) (Object) r.id().identifier()), Optional.empty(), slotTransactions); } return Optional.of(event); diff --git a/src/main/java/org/spongepowered/common/event/tracking/phase/general/CommandState.java b/src/main/java/org/spongepowered/common/event/tracking/phase/general/CommandState.java index d414a4320a6..33d3b450f6d 100644 --- a/src/main/java/org/spongepowered/common/event/tracking/phase/general/CommandState.java +++ b/src/main/java/org/spongepowered/common/event/tracking/phase/general/CommandState.java @@ -98,7 +98,7 @@ public void unwind(final CommandPhaseContext phaseContext) { public Supplier attemptWorldKey(CommandPhaseContext context) { final Optional playerSource = context.getSource(net.minecraft.world.entity.player.Player.class); if (playerSource.isPresent()) { - return () -> (ResourceKey) (Object) playerSource.get().level().dimension().location(); + return () -> (ResourceKey) (Object) playerSource.get().level().dimension().identifier(); } return super.attemptWorldKey(context); } diff --git a/src/main/java/org/spongepowered/common/event/tracking/phase/packet/PacketPhaseUtil.java b/src/main/java/org/spongepowered/common/event/tracking/phase/packet/PacketPhaseUtil.java index 9013c2e40b7..c3c1ffe64fd 100644 --- a/src/main/java/org/spongepowered/common/event/tracking/phase/packet/PacketPhaseUtil.java +++ b/src/main/java/org/spongepowered/common/event/tracking/phase/packet/PacketPhaseUtil.java @@ -39,7 +39,7 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.animal.horse.AbstractChestedHorse; +import net.minecraft.world.entity.animal.equine.AbstractChestedHorse; import net.minecraft.world.entity.animal.sheep.Sheep; import net.minecraft.world.entity.animal.wolf.Wolf; import net.minecraft.world.entity.player.Inventory; @@ -61,7 +61,7 @@ import org.spongepowered.api.event.CauseStackManager; import org.spongepowered.api.item.inventory.ItemStackSnapshot; import org.spongepowered.api.item.inventory.transaction.SlotTransaction; -import org.spongepowered.common.accessor.entity.passive.AbstractChestedHorseEntityAccessor; +import org.spongepowered.common.accessor.entity.animal.equine.AbstractChestedHorseEntityAccessor; import org.spongepowered.common.accessor.network.protocol.game.ServerboundMovePlayerPacketAccessor; import org.spongepowered.common.accessor.world.entity.EntityAccessor; import org.spongepowered.common.accessor.world.entity.animal.sheep.SheepAccessor; diff --git a/src/main/java/org/spongepowered/common/event/tracking/phase/packet/PacketState.java b/src/main/java/org/spongepowered/common/event/tracking/phase/packet/PacketState.java index e6c2cf7122f..c361f3e2fa1 100644 --- a/src/main/java/org/spongepowered/common/event/tracking/phase/packet/PacketState.java +++ b/src/main/java/org/spongepowered/common/event/tracking/phase/packet/PacketState.java @@ -26,7 +26,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.network.protocol.Packet; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.block.Block; @@ -93,7 +93,7 @@ public Supplier getSpawnTypeForTransaction( @Override public Supplier attemptWorldKey(final P context) { - final ResourceLocation worldKey = context.packetPlayer.level().dimension().location(); + final Identifier worldKey = context.packetPlayer.level().dimension().identifier(); return () -> (ResourceKey) (Object) worldKey; } diff --git a/src/main/java/org/spongepowered/common/event/tracking/phase/tick/EntityTickPhaseState.java b/src/main/java/org/spongepowered/common/event/tracking/phase/tick/EntityTickPhaseState.java index a370479c4dd..6dfae53e538 100644 --- a/src/main/java/org/spongepowered/common/event/tracking/phase/tick/EntityTickPhaseState.java +++ b/src/main/java/org/spongepowered/common/event/tracking/phase/tick/EntityTickPhaseState.java @@ -115,7 +115,7 @@ public Supplier attemptWorldKey( throw new IllegalStateException("attempting a world key on the client???"); }; } - return () -> (ResourceKey) (Object) entity.level().dimension().location(); + return () -> (ResourceKey) (Object) entity.level().dimension().identifier(); } @Override diff --git a/src/main/java/org/spongepowered/common/event/tracking/phase/tick/LocationBasedTickPhaseState.java b/src/main/java/org/spongepowered/common/event/tracking/phase/tick/LocationBasedTickPhaseState.java index c6c59b088f8..ecce9ee5019 100644 --- a/src/main/java/org/spongepowered/common/event/tracking/phase/tick/LocationBasedTickPhaseState.java +++ b/src/main/java/org/spongepowered/common/event/tracking/phase/tick/LocationBasedTickPhaseState.java @@ -108,7 +108,7 @@ public void appendNotifierToBlockEvent( public Supplier attemptWorldKey(final T context) { return MemoizedSupplier.memoize(() -> { final World<@NonNull ?, @NonNull ?> world = this.getLocatableBlockSourceFromContext(context).world(); - return (ResourceKey) (Object) ((Level) world).dimension().location(); + return (ResourceKey) (Object) ((Level) world).dimension().identifier(); }); } diff --git a/src/main/java/org/spongepowered/common/event/tracking/phase/tick/WorldTickState.java b/src/main/java/org/spongepowered/common/event/tracking/phase/tick/WorldTickState.java index 76068d6e12f..56eea3c6873 100644 --- a/src/main/java/org/spongepowered/common/event/tracking/phase/tick/WorldTickState.java +++ b/src/main/java/org/spongepowered/common/event/tracking/phase/tick/WorldTickState.java @@ -68,7 +68,7 @@ public void unwind(final WorldTickContext phaseContext) { public Supplier attemptWorldKey( final WorldTickContext context ) { - return () -> (ResourceKey) (Object) Objects.requireNonNull(context.serverWorld.get(), "ServerWorld reference lost during tick").dimension().location(); + return () -> (ResourceKey) (Object) Objects.requireNonNull(context.serverWorld.get(), "ServerWorld reference lost during tick").dimension().identifier(); } public static class WorldTickContext extends TickContext { diff --git a/src/main/java/org/spongepowered/common/fluid/SpongeFluidStateBuilder.java b/src/main/java/org/spongepowered/common/fluid/SpongeFluidStateBuilder.java index 446f781bfe3..6a9ee664dd9 100644 --- a/src/main/java/org/spongepowered/common/fluid/SpongeFluidStateBuilder.java +++ b/src/main/java/org/spongepowered/common/fluid/SpongeFluidStateBuilder.java @@ -32,7 +32,7 @@ import net.minecraft.commands.arguments.blocks.BlockStateParser; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.Property; import net.minecraft.world.level.material.Fluid; @@ -126,7 +126,7 @@ private org.spongepowered.api.fluid.FluidState parseString(final String string) private Fluid readFluid(final StringReader reader) throws CommandSyntaxException { final int cursor = reader.getCursor(); - final ResourceLocation fluidKey = ResourceLocation.read(reader); + final Identifier fluidKey = Identifier.read(reader); final Registry fluidRegistry = SpongeCommon.vanillaRegistry(Registries.FLUID); return fluidRegistry.getOptional(fluidKey).orElseThrow(() -> { reader.setCursor(cursor); diff --git a/src/main/java/org/spongepowered/common/hooks/EntityHooks.java b/src/main/java/org/spongepowered/common/hooks/EntityHooks.java index 471609a73b9..8b600f5147f 100644 --- a/src/main/java/org/spongepowered/common/hooks/EntityHooks.java +++ b/src/main/java/org/spongepowered/common/hooks/EntityHooks.java @@ -25,7 +25,7 @@ package org.spongepowered.common.hooks; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.boss.EnderDragonPart; +import net.minecraft.world.entity.boss.enderdragon.EnderDragonPart; public interface EntityHooks { diff --git a/src/main/java/org/spongepowered/common/hooks/WorldGenerationHooks.java b/src/main/java/org/spongepowered/common/hooks/WorldGenerationHooks.java index d654f134225..33ceb1414cb 100644 --- a/src/main/java/org/spongepowered/common/hooks/WorldGenerationHooks.java +++ b/src/main/java/org/spongepowered/common/hooks/WorldGenerationHooks.java @@ -25,6 +25,7 @@ package org.spongepowered.common.hooks; import com.google.common.collect.ImmutableList; +import com.mojang.datafixers.DataFixer; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.Level; import net.minecraft.world.level.levelgen.structure.LegacyStructureDataHandler; @@ -34,19 +35,20 @@ public interface WorldGenerationHooks { - default LegacyStructureDataHandler createLegacyStructureDataUtil(final ResourceKey dimensionType, final DimensionDataStorage savedData) { + default LegacyStructureDataHandler createLegacyStructureDataUtil(final ResourceKey dimensionType, final DimensionDataStorage savedData, final DataFixer fixer) { if (dimensionType == Level.OVERWORLD) { return new LegacyStructureDataHandler( savedData, ImmutableList.of("Monument", "Stronghold", "Village", "Mineshaft", "Temple", "Mansion"), - ImmutableList.of("Village", "Mineshaft", "Mansion", "Igloo", "Desert_Pyramid", "Jungle_Pyramid", "Swamp_Hut", "Stronghold", "Monument") + ImmutableList.of("Village", "Mineshaft", "Mansion", "Igloo", "Desert_Pyramid", "Jungle_Pyramid", "Swamp_Hut", "Stronghold", "Monument"), + fixer ); } else if (dimensionType == Level.NETHER) { final List keys = ImmutableList.of("Fortress"); - return new LegacyStructureDataHandler(savedData, keys, keys); + return new LegacyStructureDataHandler(savedData, keys, keys, fixer); } else if (dimensionType == Level.END) { final List keys = ImmutableList.of("EndCity"); - return new LegacyStructureDataHandler(savedData, keys, keys); + return new LegacyStructureDataHandler(savedData, keys, keys, fixer); } else { throw new RuntimeException(String.format("Unknown dimension type : %s", dimensionType)); } diff --git a/src/main/java/org/spongepowered/common/inventory/custom/SpongeViewableInventoryBuilder.java b/src/main/java/org/spongepowered/common/inventory/custom/SpongeViewableInventoryBuilder.java index 00455d01cda..479c408fa4b 100644 --- a/src/main/java/org/spongepowered/common/inventory/custom/SpongeViewableInventoryBuilder.java +++ b/src/main/java/org/spongepowered/common/inventory/custom/SpongeViewableInventoryBuilder.java @@ -26,8 +26,8 @@ import net.minecraft.world.Container; import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.animal.horse.AbstractHorse; -import net.minecraft.world.entity.npc.Villager; +import net.minecraft.world.entity.animal.equine.AbstractHorse; +import net.minecraft.world.entity.npc.villager.Villager; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.AnvilMenu; diff --git a/src/main/java/org/spongepowered/common/inventory/lens/impl/LensRegistrar.java b/src/main/java/org/spongepowered/common/inventory/lens/impl/LensRegistrar.java index 6a9b485b44f..e3822ac0ea5 100644 --- a/src/main/java/org/spongepowered/common/inventory/lens/impl/LensRegistrar.java +++ b/src/main/java/org/spongepowered/common/inventory/lens/impl/LensRegistrar.java @@ -27,10 +27,10 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import net.minecraft.world.CompoundContainer; -import net.minecraft.world.entity.npc.AbstractVillager; -import net.minecraft.world.entity.npc.Villager; -import net.minecraft.world.entity.npc.WanderingTrader; -import net.minecraft.world.entity.vehicle.MinecartChest; +import net.minecraft.world.entity.npc.villager.AbstractVillager; +import net.minecraft.world.entity.npc.villager.Villager; +import net.minecraft.world.entity.npc.wanderingtrader.WanderingTrader; +import net.minecraft.world.entity.vehicle.minecart.MinecartChest; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.AnvilMenu; import net.minecraft.world.inventory.CraftingContainer; diff --git a/src/main/java/org/spongepowered/common/inventory/util/ContainerUtil.java b/src/main/java/org/spongepowered/common/inventory/util/ContainerUtil.java index 87c3aa91285..480ed8b004e 100644 --- a/src/main/java/org/spongepowered/common/inventory/util/ContainerUtil.java +++ b/src/main/java/org/spongepowered/common/inventory/util/ContainerUtil.java @@ -49,11 +49,11 @@ import org.spongepowered.common.SpongeCommon; import org.spongepowered.common.accessor.world.inventory.AbstractContainerMenuAccessor; import org.spongepowered.common.accessor.world.inventory.AbstractFurnaceMenuAccessor; +import org.spongepowered.common.accessor.world.inventory.AbstractMountInventoryMenuAccessor; import org.spongepowered.common.accessor.world.inventory.BeaconMenuAccessor; import org.spongepowered.common.accessor.world.inventory.BrewingStandMenuAccessor; import org.spongepowered.common.accessor.world.inventory.DispenserMenuAccessor; import org.spongepowered.common.accessor.world.inventory.HopperMenuAccessor; -import org.spongepowered.common.accessor.world.inventory.HorseInventoryMenuAccessor; import org.spongepowered.common.accessor.world.inventory.ItemCombinerMenuAccessor; import org.spongepowered.common.accessor.world.inventory.MerchantMenuAccessor; import org.spongepowered.common.accessor.world.inventory.ResultSlotAccessor; @@ -291,8 +291,8 @@ private static Lens generateAdapterLens(final SlotLensProvider slots, final int return ContainerUtil.carrierOrNull(((BrewingStandMenuAccessor) container).accessor$brewingStand()); } else if (container instanceof BeaconMenu) { return new SpongeBlockEntityCarrier(((BeaconMenuAccessor) container).accessor$access().evaluate(Level::getBlockEntity).orElse(null), container); - } else if (container instanceof HorseInventoryMenuAccessor) { - return (Carrier) ((HorseInventoryMenuAccessor) container).accessor$horse(); + } else if (container instanceof AbstractMountInventoryMenuAccessor) { + return (Carrier) ((AbstractMountInventoryMenuAccessor) container).accessor$mount(); } else if (container instanceof MerchantMenuAccessor && ((MerchantMenuAccessor) container).accessor$trader() instanceof Carrier) { return (Carrier) ((MerchantMenuAccessor) container).accessor$trader(); } else if (container instanceof ItemCombinerMenuAccessor) { diff --git a/src/main/java/org/spongepowered/common/item/SpongeItemStack.java b/src/main/java/org/spongepowered/common/item/SpongeItemStack.java index fd2224756c1..9253d64cdc6 100644 --- a/src/main/java/org/spongepowered/common/item/SpongeItemStack.java +++ b/src/main/java/org/spongepowered/common/item/SpongeItemStack.java @@ -35,8 +35,8 @@ import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; +import net.minecraft.resources.Identifier; import net.minecraft.resources.RegistryOps; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.EquipmentSlotGroup; import net.minecraft.world.entity.ai.attributes.Attribute; @@ -193,7 +193,7 @@ public ItemStack.Builder fromBlockSnapshot(final BlockSnapshot blockSnapshot) { Objects.requireNonNull(blockSnapshot, "The snapshot was null!"); this.reset(); final BlockType blockType = blockSnapshot.state().type(); - final ResourceLocation blockTypeKey = SpongeCommon.vanillaRegistry(Registries.BLOCK).getKey((Block) blockType); + final Identifier blockTypeKey = SpongeCommon.vanillaRegistry(Registries.BLOCK).getKey((Block) blockType); final Optional itemType = blockType.item(); this.itemType(itemType.orElseThrow(() -> new IllegalArgumentException("ItemType not found for block type: " + blockTypeKey))); this.quantity(1); @@ -201,7 +201,7 @@ public ItemStack.Builder fromBlockSnapshot(final BlockSnapshot blockSnapshot) { sbs.getCompound().ifPresent(compoundTag -> { final var blockEntityTypes = SpongeCommon.vanillaRegistry(Registries.BLOCK_ENTITY_TYPE); final var blockEntityType = compoundTag.getString("id") - .map(ResourceLocation::parse) + .map(Identifier::parse) .flatMap(blockEntityTypes::getOptional); blockEntityType.ifPresent(beType -> { TypedEntityData> data = TypedEntityData.of(beType, compoundTag); @@ -227,7 +227,7 @@ public ItemStack.Builder fromBlockSnapshot(final BlockSnapshot blockSnapshot) { public ItemStack.Builder fromBlockState(final BlockState blockState) { Objects.requireNonNull(blockState, "blockState"); final BlockType blockType = blockState.type(); - final ResourceLocation blockTypeKey = SpongeCommon.vanillaRegistry(Registries.BLOCK).getKey((Block) blockType); + final Identifier blockTypeKey = SpongeCommon.vanillaRegistry(Registries.BLOCK).getKey((Block) blockType); this.itemType(blockType.item().orElseThrow(() -> new IllegalArgumentException("Missing valid ItemType for BlockType: " + blockTypeKey))); blockState.getValues().forEach(this::add); return this; @@ -282,7 +282,7 @@ public ItemStack empty() { @NotNull public static DataContainer getDataContainer(final net.minecraft.world.item.ItemStack mcStack) { - final ResourceLocation key = BuiltInRegistries.ITEM.getKey(mcStack.getItem()); + final Identifier key = BuiltInRegistries.ITEM.getKey(mcStack.getItem()); final DataContainer container = DataContainer.createNew() .set(Queries.CONTENT_VERSION, ((ItemStack) (Object) mcStack).contentVersion()) .set(Constants.ItemStack.TYPE, key) diff --git a/src/main/java/org/spongepowered/common/item/enchantment/SpongeRandomEnchantmentListBuilder.java b/src/main/java/org/spongepowered/common/item/enchantment/SpongeRandomEnchantmentListBuilder.java index ac6a7a0ffa1..d7c5373d353 100644 --- a/src/main/java/org/spongepowered/common/item/enchantment/SpongeRandomEnchantmentListBuilder.java +++ b/src/main/java/org/spongepowered/common/item/enchantment/SpongeRandomEnchantmentListBuilder.java @@ -26,7 +26,6 @@ import com.google.common.collect.Lists; -import net.minecraft.Util; import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; import net.minecraft.util.RandomSource; @@ -119,7 +118,7 @@ private List basedOfFixedPool(final RandomSource randomIn, while (randomIn.nextInt(50) <= this.level) { - EnchantmentHelper.filterCompatibleEnchantments(list1, Util.lastOf(list)); + EnchantmentHelper.filterCompatibleEnchantments(list1, list.getLast()); if (list1.isEmpty()) { diff --git a/src/main/java/org/spongepowered/common/item/merchant/TradeOfferGeneratorWrapper.java b/src/main/java/org/spongepowered/common/item/merchant/TradeOfferGeneratorWrapper.java index c5368a64499..1f84b336cef 100644 --- a/src/main/java/org/spongepowered/common/item/merchant/TradeOfferGeneratorWrapper.java +++ b/src/main/java/org/spongepowered/common/item/merchant/TradeOfferGeneratorWrapper.java @@ -24,9 +24,10 @@ */ package org.spongepowered.common.item.merchant; +import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.npc.VillagerTrades; +import net.minecraft.world.entity.npc.villager.VillagerTrades; import net.minecraft.world.item.trading.MerchantOffer; import org.spongepowered.api.item.merchant.TradeOffer; import org.spongepowered.api.item.merchant.TradeOfferGenerator; @@ -44,7 +45,7 @@ public TradeOfferGeneratorWrapper(final TradeOfferGenerator generator) { } @Override - public MerchantOffer getOffer(final Entity trader, final RandomSource rand) { + public MerchantOffer getOffer(final ServerLevel level, final Entity trader, final RandomSource rand) { return (MerchantOffer) this.generator.apply((org.spongepowered.api.entity.Entity) trader, (RandomProvider.Source) rand); } @@ -80,4 +81,5 @@ public String toString() { .add("generator=" + this.generator) .toString(); } + } diff --git a/src/main/java/org/spongepowered/common/item/recipe/ingredient/IngredientUtil.java b/src/main/java/org/spongepowered/common/item/recipe/ingredient/IngredientUtil.java index 228ba81923a..a1baea3bc60 100644 --- a/src/main/java/org/spongepowered/common/item/recipe/ingredient/IngredientUtil.java +++ b/src/main/java/org/spongepowered/common/item/recipe/ingredient/IngredientUtil.java @@ -27,7 +27,7 @@ import net.minecraft.core.HolderSet; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.crafting.Ingredient; @@ -60,7 +60,7 @@ public static org.spongepowered.api.item.recipe.crafting.Ingredient of(ItemType. } public static org.spongepowered.api.item.recipe.crafting.@Nullable Ingredient of(ResourceKey tagKey) { - final TagKey key = TagKey.create(Registries.ITEM, (ResourceLocation) (Object) tagKey); + final TagKey key = TagKey.create(Registries.ITEM, (Identifier) (Object) tagKey); var holderset = BuiltInRegistries.ITEM.get(key).map(hs -> (HolderSet) hs).orElse(HolderSet.empty()); return IngredientUtil.fromNative(Ingredient.of(holderset)); } diff --git a/src/main/java/org/spongepowered/common/item/recipe/ingredient/SpongeItemList.java b/src/main/java/org/spongepowered/common/item/recipe/ingredient/SpongeItemList.java index 5ba2839a520..2eb5298c845 100644 --- a/src/main/java/org/spongepowered/common/item/recipe/ingredient/SpongeItemList.java +++ b/src/main/java/org/spongepowered/common/item/recipe/ingredient/SpongeItemList.java @@ -25,12 +25,12 @@ package org.spongepowered.common.item.recipe.ingredient; import com.mojang.datafixers.util.Either; -import net.minecraft.Util; import net.minecraft.core.Holder; import net.minecraft.core.HolderOwner; import net.minecraft.core.HolderSet; import net.minecraft.tags.TagKey; import net.minecraft.util.RandomSource; +import net.minecraft.util.Util; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/org/spongepowered/common/map/decoration/SpongeMapDecorationBuilder.java b/src/main/java/org/spongepowered/common/map/decoration/SpongeMapDecorationBuilder.java index 1b65b346685..dc088ee0b29 100644 --- a/src/main/java/org/spongepowered/common/map/decoration/SpongeMapDecorationBuilder.java +++ b/src/main/java/org/spongepowered/common/map/decoration/SpongeMapDecorationBuilder.java @@ -28,7 +28,7 @@ import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; import net.minecraft.core.Holder; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.data.persistence.DataQuery; @@ -125,7 +125,7 @@ public MapDecoration.Builder fromContainer(final DataView container) { final byte rot = this.getByteFromContainer(container, Constants.Map.DECORATION_ROTATION); - final var mcType = BuiltInRegistries.MAP_DECORATION_TYPE.getValue((ResourceLocation) (Object) type); + final var mcType = BuiltInRegistries.MAP_DECORATION_TYPE.getValue((Identifier) (Object) type); if (mcType == null) { throw new IllegalStateException("Missing a MapDecorationType, could not find one for Minecraft's MapDecoration.Type: " + type); } diff --git a/src/main/java/org/spongepowered/common/network/channel/ChannelUtils.java b/src/main/java/org/spongepowered/common/network/channel/ChannelUtils.java index 57514e417a1..f00b9f568f3 100644 --- a/src/main/java/org/spongepowered/common/network/channel/ChannelUtils.java +++ b/src/main/java/org/spongepowered/common/network/channel/ChannelUtils.java @@ -25,7 +25,7 @@ package org.spongepowered.common.network.channel; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.spongepowered.api.Sponge; import org.spongepowered.common.hooks.PlatformHooks; import org.spongepowered.common.util.Constants; @@ -34,7 +34,7 @@ @SuppressWarnings({"rawtypes", "unchecked"}) public final class ChannelUtils { - public static final CustomPacketPayload.Type REGISTER = new CustomPacketPayload.Type<>((ResourceLocation) (Object) Constants.Channels.REGISTER_KEY); + public static final CustomPacketPayload.Type REGISTER = new CustomPacketPayload.Type<>((Identifier) (Object) Constants.Channels.REGISTER_KEY); public static ArrayList spongeChannelCodecs(final int maxPayloadSize) { ArrayList channels = new ArrayList<>(); diff --git a/src/main/java/org/spongepowered/common/network/channel/SpongeChannel.java b/src/main/java/org/spongepowered/common/network/channel/SpongeChannel.java index 0dabdf2ae4d..4430e5be015 100644 --- a/src/main/java/org/spongepowered/common/network/channel/SpongeChannel.java +++ b/src/main/java/org/spongepowered/common/network/channel/SpongeChannel.java @@ -26,7 +26,7 @@ import com.google.common.collect.Multimap; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.checkerframework.checker.nullness.qual.Nullable; @@ -69,7 +69,7 @@ public SpongeChannel(final int type, final ResourceKey key, final SpongeChannelM this.key = key; this.manager = manager; this.logger = LogManager.getLogger("channel/" + key.formatted()); - this.payloadType = new CustomPacketPayload.Type<>((ResourceLocation) (Object) key); + this.payloadType = new CustomPacketPayload.Type<>((Identifier) (Object) key); } public int getType() { diff --git a/src/main/java/org/spongepowered/common/network/channel/SpongeChannelManager.java b/src/main/java/org/spongepowered/common/network/channel/SpongeChannelManager.java index 30ab1bb0711..5f1a74b15bb 100644 --- a/src/main/java/org/spongepowered/common/network/channel/SpongeChannelManager.java +++ b/src/main/java/org/spongepowered/common/network/channel/SpongeChannelManager.java @@ -31,7 +31,7 @@ import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.network.protocol.login.custom.CustomQueryPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.Sponge; @@ -172,8 +172,8 @@ public CompletableFuture requestClientType(final EngineConnection connecti final Packet mcPacket = PacketUtil.createLoginPayloadRequest(new CustomQueryPayload() { @Override - public ResourceLocation id() { - return (ResourceLocation) (Object) Constants.Channels.SPONGE_CLIENT_TYPE; + public Identifier id() { + return (Identifier) (Object) Constants.Channels.SPONGE_CLIENT_TYPE; } @Override @@ -217,8 +217,8 @@ public CompletableFuture sendLoginChannelRegistry(final EngineConnection c final Consumer consumer = this.encodeChannelRegistry(); final Packet mcPacket = PacketUtil.createLoginPayloadRequest(new CustomQueryPayload() { @Override - public ResourceLocation id() { - return (ResourceLocation) (Object) Constants.Channels.SPONGE_CHANNEL_REGISTRY; + public Identifier id() { + return (Identifier) (Object) Constants.Channels.SPONGE_CHANNEL_REGISTRY; } @Override @@ -288,7 +288,7 @@ private void handleChannelRegistry(final EngineConnection connection, final Chan } } - public boolean handlePlayPayload(final EngineConnection connection, final EngineConnectionState state, final ResourceLocation channelKey, final Consumer payload) { + public boolean handlePlayPayload(final EngineConnection connection, final EngineConnectionState state, final Identifier channelKey, final Consumer payload) { final ChannelBuf buf = this.bufferAllocator.buffer(); payload.accept((FriendlyByteBuf) buf); @@ -334,7 +334,7 @@ private boolean handlePlayPayload(final EngineConnection connection, final Engin } } - public boolean handleLoginRequestPayload(final EngineConnection connection, final EngineConnectionState state, final ResourceLocation channelKey, final int transactionId, final Consumer payload) { + public boolean handleLoginRequestPayload(final EngineConnection connection, final EngineConnectionState state, final Identifier channelKey, final int transactionId, final Consumer payload) { // Server -> Client request final ChannelBuf buf = this.bufferAllocator.buffer(); payload.accept((FriendlyByteBuf) buf); diff --git a/src/main/java/org/spongepowered/common/network/channel/SpongeChannelPayload.java b/src/main/java/org/spongepowered/common/network/channel/SpongeChannelPayload.java index e76845f650c..d03e2351cc9 100644 --- a/src/main/java/org/spongepowered/common/network/channel/SpongeChannelPayload.java +++ b/src/main/java/org/spongepowered/common/network/channel/SpongeChannelPayload.java @@ -30,12 +30,12 @@ import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.network.protocol.login.custom.CustomQueryAnswerPayload; import net.minecraft.network.protocol.login.custom.CustomQueryPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.checkerframework.checker.nullness.qual.Nullable; import java.util.function.Consumer; -public record SpongeChannelPayload(@Nullable Type type, @Nullable ResourceLocation id, Consumer consumer) implements CustomPacketPayload, CustomQueryPayload, CustomQueryAnswerPayload { +public record SpongeChannelPayload(@Nullable Type type, @Nullable Identifier id, Consumer consumer) implements CustomPacketPayload, CustomQueryPayload, CustomQueryAnswerPayload { public static StreamCodec streamCodec(final Type type, final int maxPayloadSize) { return CustomPacketPayload.codec( @@ -59,7 +59,7 @@ public Type type() { } @Override - public ResourceLocation id() { + public Identifier id() { return this.id; } @@ -67,7 +67,7 @@ public static SpongeChannelPayload fromType(final Type consumer) { + public static SpongeChannelPayload fromId(final Identifier id, final Consumer consumer) { return new SpongeChannelPayload(null, id, consumer); } diff --git a/src/main/java/org/spongepowered/common/network/channel/packet/SpongeBasicPacketChannel.java b/src/main/java/org/spongepowered/common/network/channel/packet/SpongeBasicPacketChannel.java index 88e3b5db59e..f5349bd002c 100644 --- a/src/main/java/org/spongepowered/common/network/channel/packet/SpongeBasicPacketChannel.java +++ b/src/main/java/org/spongepowered/common/network/channel/packet/SpongeBasicPacketChannel.java @@ -26,7 +26,7 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.protocol.login.custom.CustomQueryPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.network.ClientSideConnection; @@ -93,8 +93,8 @@ private

, R extends Packet> void sendRequestTo(final final net.minecraft.network.protocol.Packet mcPacket = PacketUtil.createLoginPayloadRequest(new CustomQueryPayload() { @Override - public ResourceLocation id() { - return (ResourceLocation) (Object) Constants.Channels.FML_LOGIN_WRAPPER_CHANNEL; + public Identifier id() { + return (Identifier) (Object) Constants.Channels.FML_LOGIN_WRAPPER_CHANNEL; } @Override @@ -139,8 +139,8 @@ private CompletableFuture sendNormalTo(final EngineConnection connection, final net.minecraft.network.protocol.Packet mcPacket = PacketUtil.createLoginPayloadRequest(new CustomQueryPayload() { @Override - public ResourceLocation id() { - return (ResourceLocation) (Object) key; + public Identifier id() { + return (Identifier) (Object) key; } @Override diff --git a/src/main/java/org/spongepowered/common/network/channel/packet/SpongePacketChannel.java b/src/main/java/org/spongepowered/common/network/channel/packet/SpongePacketChannel.java index 13011064d58..7ec82bee974 100644 --- a/src/main/java/org/spongepowered/common/network/channel/packet/SpongePacketChannel.java +++ b/src/main/java/org/spongepowered/common/network/channel/packet/SpongePacketChannel.java @@ -26,7 +26,7 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.protocol.login.custom.CustomQueryPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.network.EngineConnection; @@ -122,8 +122,8 @@ private

, R extends Packet> void sendRequestPacketTo( final ResourceKey key = this.key(); mcPacketSupplier = () -> PacketUtil.createLoginPayloadRequest(new CustomQueryPayload() { @Override - public ResourceLocation id() { - return (ResourceLocation) (Object) key; + public Identifier id() { + return (Identifier) (Object) key; } @Override @@ -187,8 +187,8 @@ private

, R extends Packet> void sendResponsePacketTo final ResourceKey key = this.key(); mcPacketSupplier = () -> PacketUtil.createLoginPayloadRequest(new CustomQueryPayload() { @Override - public ResourceLocation id() { - return (ResourceLocation) (Object) key; + public Identifier id() { + return (Identifier) (Object) key; } @Override @@ -216,8 +216,8 @@ public void write(FriendlyByteBuf var1) { final ResourceKey key = this.key(); mcPacketSupplier = () -> PacketUtil.createLoginPayloadRequest(new CustomQueryPayload() { @Override - public ResourceLocation id() { - return (ResourceLocation) (Object) key; + public Identifier id() { + return (Identifier) (Object) key; } @Override @@ -269,8 +269,8 @@ private

void sendNormalPacketTo(final EngineConnection connec final ResourceKey key = this.key(); mcPacketSupplier = () -> PacketUtil.createLoginPayloadRequest(new CustomQueryPayload() { @Override - public ResourceLocation id() { - return (ResourceLocation) (Object) key; + public Identifier id() { + return (Identifier) (Object) key; } @Override diff --git a/src/main/java/org/spongepowered/common/network/channel/raw/SpongeRawLoginDataChannel.java b/src/main/java/org/spongepowered/common/network/channel/raw/SpongeRawLoginDataChannel.java index 3a83d426443..35f88ea9784 100644 --- a/src/main/java/org/spongepowered/common/network/channel/raw/SpongeRawLoginDataChannel.java +++ b/src/main/java/org/spongepowered/common/network/channel/raw/SpongeRawLoginDataChannel.java @@ -27,7 +27,7 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.login.custom.CustomQueryPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.network.EngineConnection; import org.spongepowered.api.network.EngineConnectionState; @@ -170,8 +170,8 @@ public CompletableFuture sendTo(final EngineConnection connection, f final ResourceKey id = this.parent.key(); final Packet mcPacket = PacketUtil.createLoginPayloadRequest(new CustomQueryPayload() { @Override - public ResourceLocation id() { - return (ResourceLocation) (Object) id; + public Identifier id() { + return (Identifier) (Object) id; } @Override diff --git a/src/main/java/org/spongepowered/common/network/packet/ChangeViewerEnvironmentPacket.java b/src/main/java/org/spongepowered/common/network/packet/ChangeViewerEnvironmentPacket.java index 937a61543aa..b1d559c7cec 100644 --- a/src/main/java/org/spongepowered/common/network/packet/ChangeViewerEnvironmentPacket.java +++ b/src/main/java/org/spongepowered/common/network/packet/ChangeViewerEnvironmentPacket.java @@ -25,7 +25,7 @@ package org.spongepowered.common.network.packet; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.dimension.DimensionType; import org.spongepowered.api.network.channel.ChannelBuf; import org.spongepowered.api.network.channel.packet.Packet; @@ -33,7 +33,7 @@ public final class ChangeViewerEnvironmentPacket implements Packet { - public ResourceLocation dimensionLogic; + public Identifier dimensionLogic; public ChangeViewerEnvironmentPacket() { } @@ -44,7 +44,7 @@ public ChangeViewerEnvironmentPacket(final DimensionType dimensionType) { @Override public void read(final ChannelBuf buf) { - this.dimensionLogic = ResourceLocation.parse(buf.readString()); + this.dimensionLogic = Identifier.parse(buf.readString()); } @Override diff --git a/src/main/java/org/spongepowered/common/network/packet/SpongePacketHandler.java b/src/main/java/org/spongepowered/common/network/packet/SpongePacketHandler.java index 98aa8a2a3c9..951e17140a2 100644 --- a/src/main/java/org/spongepowered/common/network/packet/SpongePacketHandler.java +++ b/src/main/java/org/spongepowered/common/network/packet/SpongePacketHandler.java @@ -26,20 +26,16 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.renderer.DimensionSpecialEffects; import net.minecraft.core.BlockPos; import net.minecraft.core.SectionPos; -import net.minecraft.core.registries.Registries; import net.minecraft.server.players.NameAndId; import net.minecraft.world.entity.Entity; -import net.minecraft.world.level.dimension.DimensionType; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.entity.living.player.server.ServerPlayer; import org.spongepowered.api.network.ClientConnectionState; import org.spongepowered.api.network.EngineConnectionStates; import org.spongepowered.api.network.channel.packet.PacketChannel; import org.spongepowered.common.SpongeCommon; -import org.spongepowered.common.accessor.client.multiplayer.ClientLevelAccessor; import org.spongepowered.common.bridge.CreatorTrackedBridge; import org.spongepowered.common.bridge.world.level.chunk.LevelChunkBridge; import org.spongepowered.common.network.channel.SpongeChannelManager; @@ -99,9 +95,6 @@ public static void init(final SpongeChannelManager registry) { if (world == null) { return; } - - final DimensionType dimensionType = SpongeCommon.vanillaRegistry(Registries.DIMENSION_TYPE).getValue(packet.dimensionLogic); - ((ClientLevelAccessor) world).accessor$effects(DimensionSpecialEffects.forType(dimensionType)); } ); } diff --git a/src/main/java/org/spongepowered/common/registry/RegistryHolderLogic.java b/src/main/java/org/spongepowered/common/registry/RegistryHolderLogic.java index 4d07c196be6..d6838c10da4 100644 --- a/src/main/java/org/spongepowered/common/registry/RegistryHolderLogic.java +++ b/src/main/java/org/spongepowered/common/registry/RegistryHolderLogic.java @@ -32,7 +32,7 @@ import net.minecraft.core.RegistryAccess; import net.minecraft.core.WritableRegistry; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.DependencySorter; import net.minecraft.world.flag.FeatureFlagSet; import net.minecraft.world.flag.FeatureFlags; @@ -66,11 +66,11 @@ public RegistryHolderLogic() { this.roots.put( RegistryRoots.MINECRAFT, new MappedRegistry<>( - net.minecraft.resources.ResourceKey.createRegistryKey((ResourceLocation) (Object) RegistryRoots.MINECRAFT), + net.minecraft.resources.ResourceKey.createRegistryKey((Identifier) (Object) RegistryRoots.MINECRAFT), Lifecycle.experimental() ) ); - final ResourceLocation sponge = (ResourceLocation) (Object) RegistryRoots.SPONGE; + final Identifier sponge = (Identifier) (Object) RegistryRoots.SPONGE; this.roots.put( (ResourceKey) (Object) sponge, new MappedRegistry<>( @@ -106,7 +106,7 @@ public void setRootMinecraftRegistry(final net.minecraft.core.Registry( - net.minecraft.resources.ResourceKey.createRegistryKey((ResourceLocation) (Object) RegistryRoots.MINECRAFT), + net.minecraft.resources.ResourceKey.createRegistryKey((Identifier) (Object) RegistryRoots.MINECRAFT), Lifecycle.experimental() ); registryAccess.registries().forEach(r -> rootRegistry.register(r.key(), r.value(), RegistrationInfo.BUILT_IN)); @@ -190,18 +190,18 @@ public Registry createRegistry(final RegistryType type, final @Nullabl if (root == null) { throw new ValueNotFoundException(String.format("No '%s' root registry has been defined", type.root())); } - var registry = root.getValue((ResourceLocation) (Object) type.location()); + var registry = root.getValue((Identifier) (Object) type.location()); final boolean exists = registry != null; if (exists) { throw new DuplicateRegistrationException(String.format("Registry '%s' in root '%s' has already been defined", type.location(), type.root())); } final net.minecraft.resources.ResourceKey> key; if (Registries.ROOT_REGISTRY_NAME.equals(type.root())) { - key = net.minecraft.resources.ResourceKey.createRegistryKey((ResourceLocation) (Object) type.location()); + key = net.minecraft.resources.ResourceKey.createRegistryKey((Identifier) (Object) type.location()); } else { key = ResourceKeyAccessor.invoker$create( - (ResourceLocation) (Object) RegistryRoots.SPONGE, - (ResourceLocation) (Object) type.location() + (Identifier) (Object) RegistryRoots.SPONGE, + (Identifier) (Object) type.location() ); } registry = registrySupplier.apply(key); @@ -210,7 +210,7 @@ public Registry createRegistry(final RegistryType type, final @Nullabl final MappedRegistry mr = (MappedRegistry) registry; defaultValues.forEach((vk, vi, vv) -> { mr.register( - net.minecraft.resources.ResourceKey.create(key, (ResourceLocation) (Object) vk), + net.minecraft.resources.ResourceKey.create(key, (Identifier) (Object) vk), vv, RegistrationInfo.BUILT_IN ); @@ -256,13 +256,13 @@ public void featureFlagSet(final FeatureFlagSet featureFlagSet) { @Override public Stream>> listRegistryKeys() { return this.streamRegistries().map(k -> - ResourceKeyAccessor.invoker$create((ResourceLocation) (Object) k.type().root(), (ResourceLocation) (Object) k.type().location())); + ResourceKeyAccessor.invoker$create((Identifier) (Object) k.type().root(), (Identifier) (Object) k.type().location())); } @SuppressWarnings({"unchecked", "rawtypes"}) @Override public Optional> lookup( final net.minecraft.resources.ResourceKey> resourceKey) { - return (Optional) this.findRegistry(RegistryType.of((ResourceKey) (Object) resourceKey.registry(), (ResourceKey) (Object) resourceKey.location())); + return (Optional) this.findRegistry(RegistryType.of((ResourceKey) (Object) resourceKey.registry(), (ResourceKey) (Object) resourceKey.identifier())); } } diff --git a/src/main/java/org/spongepowered/common/registry/SpongeResourceKeyBuilder.java b/src/main/java/org/spongepowered/common/registry/SpongeResourceKeyBuilder.java index 87c23eab65e..09849a23159 100644 --- a/src/main/java/org/spongepowered/common/registry/SpongeResourceKeyBuilder.java +++ b/src/main/java/org/spongepowered/common/registry/SpongeResourceKeyBuilder.java @@ -25,8 +25,8 @@ package org.spongepowered.common.registry; -import net.minecraft.ResourceLocationException; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.IdentifierException; +import net.minecraft.resources.Identifier; import org.spongepowered.api.ResourceKey; import org.spongepowered.common.util.Preconditions; @@ -57,9 +57,9 @@ public ResourceKey build() throws IllegalStateException { Preconditions.checkState(this.value != null, "Value cannot be empty"); try { - final ResourceLocation resourceLocation = ResourceLocation.fromNamespaceAndPath(this.namespace, this.value); - return (ResourceKey) (Object) resourceLocation; - } catch (ResourceLocationException e) { + final Identifier id = Identifier.fromNamespaceAndPath(this.namespace, this.value); + return (ResourceKey) (Object) id; + } catch (IdentifierException e) { throw new IllegalStateException(e); } } diff --git a/src/main/java/org/spongepowered/common/registry/SpongeResourceKeyFactory.java b/src/main/java/org/spongepowered/common/registry/SpongeResourceKeyFactory.java index 325fd990a89..a57d6da7ca2 100644 --- a/src/main/java/org/spongepowered/common/registry/SpongeResourceKeyFactory.java +++ b/src/main/java/org/spongepowered/common/registry/SpongeResourceKeyFactory.java @@ -24,8 +24,8 @@ */ package org.spongepowered.common.registry; -import net.minecraft.ResourceLocationException; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.IdentifierException; +import net.minecraft.resources.Identifier; import org.spongepowered.api.ResourceKey; import org.spongepowered.plugin.PluginContainer; @@ -34,9 +34,9 @@ public final class SpongeResourceKeyFactory implements ResourceKey.Factory { @Override public ResourceKey of(final String namespace, final String value) { try { - final ResourceLocation resourceLocation = ResourceLocation.fromNamespaceAndPath(namespace, value); - return (ResourceKey) (Object) resourceLocation; - } catch (ResourceLocationException e) { + final Identifier id = Identifier.fromNamespaceAndPath(namespace, value); + return (ResourceKey) (Object) id; + } catch (IdentifierException e) { throw new IllegalStateException(e); } } @@ -44,9 +44,9 @@ public ResourceKey of(final String namespace, final String value) { @Override public ResourceKey of(final PluginContainer plugin, final String value) { try { - final ResourceLocation resourceLocation = ResourceLocation.fromNamespaceAndPath(plugin.metadata().id(), value); - return (ResourceKey) (Object) resourceLocation; - } catch (ResourceLocationException e) { + final Identifier id = Identifier.fromNamespaceAndPath(plugin.metadata().id(), value); + return (ResourceKey) (Object) id; + } catch (IdentifierException e) { throw new IllegalStateException(e); } } @@ -54,9 +54,9 @@ public ResourceKey of(final PluginContainer plugin, final String value) { @Override public ResourceKey resolve(final String formatted) { try { - final ResourceLocation resourceLocation = ResourceLocation.parse(formatted); - return (ResourceKey) (Object) resourceLocation; - } catch (ResourceLocationException e) { + final Identifier id = Identifier.parse(formatted); + return (ResourceKey) (Object) id; + } catch (IdentifierException e) { throw new IllegalStateException(e); } } diff --git a/src/main/java/org/spongepowered/common/registry/loader/CommandRegistryLoader.java b/src/main/java/org/spongepowered/common/registry/loader/CommandRegistryLoader.java index d13734b80ff..79bff7ba900 100644 --- a/src/main/java/org/spongepowered/common/registry/loader/CommandRegistryLoader.java +++ b/src/main/java/org/spongepowered/common/registry/loader/CommandRegistryLoader.java @@ -40,7 +40,7 @@ import net.minecraft.commands.arguments.DimensionArgument; import net.minecraft.commands.arguments.EntityArgument; import net.minecraft.commands.arguments.GameProfileArgument; -import net.minecraft.commands.arguments.ResourceLocationArgument; +import net.minecraft.commands.arguments.IdentifierArgument; import net.minecraft.commands.arguments.ScoreHolderArgument; import net.minecraft.commands.arguments.TimeArgument; import net.minecraft.commands.arguments.UuidArgument; @@ -60,7 +60,7 @@ import net.minecraft.commands.synchronization.brigadier.LongArgumentInfo; import net.minecraft.core.HolderLookup; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.phys.Vec2; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.Sponge; @@ -164,7 +164,7 @@ public static RegistryLoader> valueParameter() { l.add(ResourceKeyedValueParameters.PLAYER, k -> ClientNativeArgumentParser.createConverter(k, EntityArgument.player(), (reader, cause, selector) -> (Player) selector.findSinglePlayer((CommandSourceStack) cause))); l.add(ResourceKeyedValueParameters.PLUGIN, SpongePluginContainerValueParameter::new); l.add(ResourceKeyedValueParameters.REMAINING_JOINED_STRINGS, k -> ClientNativeArgumentParser.createIdentity(k, StringArgumentType.greedyString())); - l.add(ResourceKeyedValueParameters.RESOURCE_KEY, k -> ClientNativeArgumentParser.createConverter(k, ResourceLocationArgument.id(), (reader, cause, resourceLocation) -> (ResourceKey) (Object) resourceLocation)); + l.add(ResourceKeyedValueParameters.RESOURCE_KEY, k -> ClientNativeArgumentParser.createConverter(k, IdentifierArgument.id(), (reader, cause, Identifier) -> (ResourceKey) (Object) Identifier)); l.add(ResourceKeyedValueParameters.ROTATION, k -> ClientNativeArgumentParser.createConverter(k, RotationArgument.rotation(), (reader, cause, coords) -> { final Vec2 rotation = coords.getRotation((CommandSourceStack) cause); return new Vector3d(rotation.x, rotation.y, 0); @@ -212,7 +212,7 @@ public static RegistryLoader clientCompletionType() { l.add(ClientCompletionTypes.SNBT, k -> new SpongeClientCompletionType(CompoundTagArgument.compoundTag())); l.add(ClientCompletionTypes.NONE, k -> SpongeClientCompletionType.NONE); l.add(ClientCompletionTypes.REMAINING_JOINED_STRINGS, k -> new SpongeClientCompletionType(StringArgumentType.greedyString())); - l.add(ClientCompletionTypes.RESOURCE_KEY, k -> new SpongeClientCompletionType(ResourceLocationArgument.id())); + l.add(ClientCompletionTypes.RESOURCE_KEY, k -> new SpongeClientCompletionType(IdentifierArgument.id())); l.add(ClientCompletionTypes.STRING, k -> new SpongeClientCompletionType(StringArgumentType.string())); l.add(ClientCompletionTypes.WHOLE_NUMBER, k -> new SpongeClientCompletionType(LongArgumentType.longArg())); }); @@ -296,7 +296,7 @@ public static RegistryLoader> commandRegistrarType() { // Helper static ArgumentType argumentTypeFromKey(ResourceKey key, CommandBuildContext ctx) { - final ArgumentTypeInfo argumentTypeInfo = BuiltInRegistries.COMMAND_ARGUMENT_TYPE.getValue((ResourceLocation) (Object) key); + final ArgumentTypeInfo argumentTypeInfo = BuiltInRegistries.COMMAND_ARGUMENT_TYPE.getValue((Identifier) (Object) key); if (argumentTypeInfo instanceof SingletonArgumentInfo s) { return s.unpack(null).instantiate(ctx); } diff --git a/src/main/java/org/spongepowered/common/registry/loader/SpongeRegistryLoader.java b/src/main/java/org/spongepowered/common/registry/loader/SpongeRegistryLoader.java index 0b0da93134f..619bf64f024 100644 --- a/src/main/java/org/spongepowered/common/registry/loader/SpongeRegistryLoader.java +++ b/src/main/java/org/spongepowered/common/registry/loader/SpongeRegistryLoader.java @@ -587,7 +587,7 @@ public static RegistryLoader noiseConfig() { public static RegistryLoader flatGeneratorConfig(RegistryHolder registryAccess) { final RegistryType registryType = RegistryType.of( - (ResourceKey) (Object) Registries.FLAT_LEVEL_GENERATOR_PRESET.registry(), (ResourceKey) (Object) Registries.FLAT_LEVEL_GENERATOR_PRESET.location()); + (ResourceKey) (Object) Registries.FLAT_LEVEL_GENERATOR_PRESET.registry(), (ResourceKey) (Object) Registries.FLAT_LEVEL_GENERATOR_PRESET.identifier()); final Registry registry = registryAccess.registry(registryType); return RegistryLoader.of(l -> registry.streamEntries().forEach(e -> diff --git a/src/main/java/org/spongepowered/common/registry/loader/VanillaRegistryLoader.java b/src/main/java/org/spongepowered/common/registry/loader/VanillaRegistryLoader.java index 3c35dce8dd3..aa2f8449fbd 100644 --- a/src/main/java/org/spongepowered/common/registry/loader/VanillaRegistryLoader.java +++ b/src/main/java/org/spongepowered/common/registry/loader/VanillaRegistryLoader.java @@ -28,7 +28,7 @@ import net.minecraft.advancements.AdvancementType; import net.minecraft.core.FrontAndTop; import net.minecraft.core.MappedRegistry; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.StringRepresentable; import net.minecraft.world.Difficulty; import net.minecraft.world.InteractionHand; @@ -40,22 +40,22 @@ import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.entity.MobCategory; import net.minecraft.world.entity.ai.attributes.AttributeModifier; -import net.minecraft.world.entity.animal.Fox; -import net.minecraft.world.entity.animal.MushroomCow; -import net.minecraft.world.entity.animal.Panda; -import net.minecraft.world.entity.animal.Parrot; -import net.minecraft.world.entity.animal.Rabbit; -import net.minecraft.world.entity.animal.Salmon; -import net.minecraft.world.entity.animal.TropicalFish; import net.minecraft.world.entity.animal.axolotl.Axolotl; -import net.minecraft.world.entity.animal.horse.Llama; -import net.minecraft.world.entity.animal.horse.Markings; -import net.minecraft.world.entity.animal.horse.Variant; +import net.minecraft.world.entity.animal.cow.MushroomCow; +import net.minecraft.world.entity.animal.equine.Llama; +import net.minecraft.world.entity.animal.equine.Markings; +import net.minecraft.world.entity.animal.equine.Variant; +import net.minecraft.world.entity.animal.fish.Salmon; +import net.minecraft.world.entity.animal.fish.TropicalFish; +import net.minecraft.world.entity.animal.fox.Fox; +import net.minecraft.world.entity.animal.panda.Panda; +import net.minecraft.world.entity.animal.parrot.Parrot; +import net.minecraft.world.entity.animal.rabbit.Rabbit; import net.minecraft.world.entity.boss.enderdragon.phases.EnderDragonPhase; import net.minecraft.world.entity.monster.Phantom; -import net.minecraft.world.entity.monster.SpellcasterIllager; +import net.minecraft.world.entity.monster.illager.SpellcasterIllager; import net.minecraft.world.entity.player.ChatVisiblity; -import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.projectile.arrow.AbstractArrow; import net.minecraft.world.entity.raid.Raid; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemDisplayContext; @@ -111,7 +111,6 @@ import org.spongepowered.api.scoreboard.criteria.Criteria; import org.spongepowered.api.scoreboard.criteria.Criterion; import org.spongepowered.common.accessor.world.entity.boss.enderdragon.phases.EnderDragonPhaseAccessor; -import org.spongepowered.common.accessor.world.level.GameRulesAccessor; import org.spongepowered.common.registry.RegistryLoader; import org.spongepowered.common.registry.SpongeRegistryHolder; @@ -157,11 +156,10 @@ private void loadInstanceRegistries() { ArmorMaterials.TURTLE_SCUTE,ArmorMaterials.NETHERITE, ArmorMaterials.ARMADILLO_SCUTE, ArmorMaterials.COPPER, }; for (final ArmorMaterial armorMaterial : knownMaterials) { - materials.put(armorMaterial, armorMaterial.assetId().location().toString()); + materials.put(armorMaterial, armorMaterial.assetId().identifier().toString()); } this.naming(RegistryTypes.ARMOR_MATERIAL, materials.keySet().toArray(new ArmorMaterial[]{}), materials); - this.knownName(RegistryTypes.GAME_RULE, GameRulesAccessor.accessor$GAME_RULE_TYPES().keySet(), rule -> CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, rule.getId())); this.holder.createRegistry(RegistryTypes.ITEM_TIER, VanillaRegistryLoader.itemTier()); } @@ -342,7 +340,7 @@ private Registry naming(final RegistryType type, final int values, // To address Vanilla shortcomings, some mods will manually prefix their modid onto values they put into Vanilla registry-like // registrars. We need to account for that possibility if (rawId.contains(":")) { - map.put((ResourceKey) (Object) ResourceLocation.parse(rawId), (A) value.getKey()); + map.put((ResourceKey) (Object) Identifier.parse(rawId), (A) value.getKey()); } else { map.put(ResourceKey.sponge(rawId), (A) value.getKey()); } diff --git a/src/main/java/org/spongepowered/common/registry/provider/DimensionEffectProvider.java b/src/main/java/org/spongepowered/common/registry/provider/DimensionEffectProvider.java index 3f173a268ea..d9bb0869565 100644 --- a/src/main/java/org/spongepowered/common/registry/provider/DimensionEffectProvider.java +++ b/src/main/java/org/spongepowered/common/registry/provider/DimensionEffectProvider.java @@ -26,6 +26,7 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import net.minecraft.world.level.dimension.BuiltinDimensionTypes; +import net.minecraft.world.level.dimension.DimensionType; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.world.WorldTypeEffect; @@ -37,27 +38,27 @@ public final class DimensionEffectProvider { public static DimensionEffectProvider INSTANCE = new DimensionEffectProvider(); - private static final SpongeWorldTypeEffect OVERWORLD = new SpongeWorldTypeEffect((ResourceKey) (Object) BuiltinDimensionTypes.OVERWORLD_EFFECTS); - private static final SpongeWorldTypeEffect NETHER = new SpongeWorldTypeEffect((ResourceKey) (Object) BuiltinDimensionTypes.NETHER_EFFECTS); - private static final SpongeWorldTypeEffect END = new SpongeWorldTypeEffect((ResourceKey) (Object) BuiltinDimensionTypes.END_EFFECTS); + private static final SpongeWorldTypeEffect OVERWORLD = new SpongeWorldTypeEffect((ResourceKey) (Object) BuiltinDimensionTypes.OVERWORLD); + private static final SpongeWorldTypeEffect NETHER = new SpongeWorldTypeEffect((ResourceKey) (Object) BuiltinDimensionTypes.NETHER); + private static final SpongeWorldTypeEffect END = new SpongeWorldTypeEffect((ResourceKey) (Object) BuiltinDimensionTypes.END); static { - DimensionEffectProvider.INSTANCE.register(OVERWORLD.key(), OVERWORLD); - DimensionEffectProvider.INSTANCE.register(NETHER.key(), NETHER); - DimensionEffectProvider.INSTANCE.register(END.key(), END); + DimensionEffectProvider.INSTANCE.register(DimensionType.Skybox.OVERWORLD, OVERWORLD); + DimensionEffectProvider.INSTANCE.register(DimensionType.Skybox.NONE, NETHER); + DimensionEffectProvider.INSTANCE.register(DimensionType.Skybox.END, END); } - private final Map mappings; + private final Map mappings; private DimensionEffectProvider() { this.mappings = new Object2ObjectOpenHashMap<>(); } - public @Nullable WorldTypeEffect get(final ResourceKey key) { + public @Nullable WorldTypeEffect get(final DimensionType.Skybox key) { return this.mappings.get(key); } - public void register(final ResourceKey key, final WorldTypeEffect effect) { + public void register(final DimensionType.Skybox key, final WorldTypeEffect effect) { this.mappings.put(key, effect); } } diff --git a/src/main/java/org/spongepowered/common/scoreboard/SpongeScoreFormatFactory.java b/src/main/java/org/spongepowered/common/scoreboard/SpongeScoreFormatFactory.java index 083d6f73c6c..0fd6ad58f7c 100644 --- a/src/main/java/org/spongepowered/common/scoreboard/SpongeScoreFormatFactory.java +++ b/src/main/java/org/spongepowered/common/scoreboard/SpongeScoreFormatFactory.java @@ -41,11 +41,11 @@ public ScoreFormat blank() { @Override public ScoreFormat fixed(final Component component) { - return (ScoreFormat) new FixedFormat(SpongeAdventure.asVanilla(component)); + return (ScoreFormat) (Object) new FixedFormat(SpongeAdventure.asVanilla(component)); } @Override public ScoreFormat styled(final Style style) { - return (ScoreFormat) new StyledFormat(SpongeAdventure.asVanilla(style)); + return (ScoreFormat) (Object) new StyledFormat(SpongeAdventure.asVanilla(style)); } } diff --git a/src/main/java/org/spongepowered/common/serialization/MathCodecs.java b/src/main/java/org/spongepowered/common/serialization/MathCodecs.java index 6cee207e581..de6e2ff66e4 100644 --- a/src/main/java/org/spongepowered/common/serialization/MathCodecs.java +++ b/src/main/java/org/spongepowered/common/serialization/MathCodecs.java @@ -25,7 +25,7 @@ package org.spongepowered.common.serialization; import com.mojang.serialization.Codec; -import net.minecraft.Util; +import net.minecraft.util.Util; import org.spongepowered.math.vector.Vector3i; import java.util.stream.IntStream; diff --git a/src/main/java/org/spongepowered/common/server/PerWorldBorderListener.java b/src/main/java/org/spongepowered/common/server/PerWorldBorderListener.java index b9d555897f8..ed8601ecd7e 100644 --- a/src/main/java/org/spongepowered/common/server/PerWorldBorderListener.java +++ b/src/main/java/org/spongepowered/common/server/PerWorldBorderListener.java @@ -49,7 +49,7 @@ public void onSetSize(final WorldBorder border, final double newSize) { } @Override - public void onLerpSize(final WorldBorder border, final double oldSize, final double newSize, final long time) { + public void onLerpSize(final WorldBorder border, final double oldSize, final double newSize, final long time, final long endTime) { this.sendWorldBorderActionPacket(new ClientboundSetBorderLerpSizePacket(border)); } diff --git a/src/main/java/org/spongepowered/common/server/ServerConsoleSystemSubject.java b/src/main/java/org/spongepowered/common/server/ServerConsoleSystemSubject.java index 2b3e2cf0fc9..397af351916 100644 --- a/src/main/java/org/spongepowered/common/server/ServerConsoleSystemSubject.java +++ b/src/main/java/org/spongepowered/common/server/ServerConsoleSystemSubject.java @@ -29,6 +29,7 @@ import net.kyori.adventure.text.Component; import net.minecraft.commands.CommandSource; import net.minecraft.commands.CommandSourceStack; +import net.minecraft.server.permissions.LevelBasedPermissionSet; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec2; import net.minecraft.world.phys.Vec3; @@ -59,14 +60,14 @@ public void sendMessage(final @NonNull Identity identity, final @NonNull Compone @Override public CommandSourceStack bridge$getCommandSource(final Cause cause) { return new CommandSourceStack(this, - Vec3.ZERO, - Vec2.ZERO, - SpongeCommon.server().getLevel(Level.OVERWORLD), - 4, - "System Subject", - net.minecraft.network.chat.Component.literal("System Subject"), - SpongeCommon.server(), - null); + Vec3.ZERO, + Vec2.ZERO, + SpongeCommon.server().getLevel(Level.OVERWORLD), + LevelBasedPermissionSet.OWNER, + "System Subject", + net.minecraft.network.chat.Component.literal("System Subject"), + SpongeCommon.server(), + null); } @Override diff --git a/src/main/java/org/spongepowered/common/service/server/SpongeServerScopedServiceProvider.java b/src/main/java/org/spongepowered/common/service/server/SpongeServerScopedServiceProvider.java index 6babf671566..ad153385623 100644 --- a/src/main/java/org/spongepowered/common/service/server/SpongeServerScopedServiceProvider.java +++ b/src/main/java/org/spongepowered/common/service/server/SpongeServerScopedServiceProvider.java @@ -27,6 +27,7 @@ import com.google.common.collect.ImmutableList; import com.google.inject.Injector; import io.leangen.geantyref.TypeToken; +import net.minecraft.server.permissions.PermissionLevel; import org.checkerframework.checker.nullness.qual.NonNull; import org.spongepowered.api.Game; import org.spongepowered.api.Server; @@ -51,9 +52,9 @@ public final class SpongeServerScopedServiceProvider extends SpongeServiceProvider implements ServiceProvider.ServerScoped { - private final int functionsPermissionLevel; + private final PermissionLevel functionsPermissionLevel; - public SpongeServerScopedServiceProvider(final Game game, final Injector injector, final int functionsPermissionLevel) { + public SpongeServerScopedServiceProvider(final Game game, final Injector injector, final PermissionLevel functionsPermissionLevel) { super(game, injector); this.functionsPermissionLevel = functionsPermissionLevel; } diff --git a/src/main/java/org/spongepowered/common/service/server/permission/OpLevelCollection.java b/src/main/java/org/spongepowered/common/service/server/permission/OpLevelCollection.java index 0994d18d9ba..15b2c5bd086 100644 --- a/src/main/java/org/spongepowered/common/service/server/permission/OpLevelCollection.java +++ b/src/main/java/org/spongepowered/common/service/server/permission/OpLevelCollection.java @@ -26,6 +26,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import net.minecraft.server.permissions.PermissionLevel; import org.spongepowered.api.service.context.Context; import org.spongepowered.api.service.permission.PermissionService; import org.spongepowered.api.service.permission.Subject; @@ -45,8 +46,8 @@ public class OpLevelCollection extends SpongeSubjectCollection { public OpLevelCollection(final SpongePermissionService service) { super(PermissionService.SUBJECTS_GROUP, service); final ImmutableMap.Builder build = ImmutableMap.builder(); - for (int i = 0; i <= 4; ++i) { - build.put("op_" + i, new OpLevelSubject(service, i)); // TODO: Add subject data + for (var level : PermissionLevel.values()) { + build.put("op_" + level.ordinal(), new OpLevelSubject(service, level)); // TODO: Add subject data } this.levels = build.build(); } @@ -74,10 +75,10 @@ public Collection loadedSubjects() { public static class OpLevelSubject extends SpongeSubject { private final SpongePermissionService service; - private final int level; + private final PermissionLevel level; private final MemorySubjectData data; - public OpLevelSubject(final SpongePermissionService service, final int level) { + public OpLevelSubject(final SpongePermissionService service, final PermissionLevel level) { this.service = service; this.level = level; this.data = new GlobalMemorySubjectData(this) { @@ -87,23 +88,27 @@ public List parents(final Set contexts) { if (!contexts.isEmpty()) { return Collections.emptyList(); } - if (level == 0) { + if (level == PermissionLevel.ALL) { return super.parents(contexts); } else { - return ImmutableList.builder().add(service.getGroupForOpLevel(level - 1).asSubjectReference()).addAll(super.parents(contexts)).build(); + if (level == PermissionLevel.ALL) { + return ImmutableList.builder().add(service.getGroupForOpLevel(level).asSubjectReference()).addAll(super.parents(contexts)).build(); + } + var lesser = PermissionLevel.values()[level.ordinal() - 1]; + return ImmutableList.builder().add(service.getGroupForOpLevel(lesser).asSubjectReference()).addAll(super.parents(contexts)).build(); } } }; SpongePermissions.populateNonCommandPermissions(this.data, (permLevel, name) -> level == permLevel); } - public int opLevel() { + public PermissionLevel opLevel() { return this.level; } @Override public String identifier() { - return "op_" + this.level; + return "op_" + this.level.ordinal(); } @Override diff --git a/src/main/java/org/spongepowered/common/service/server/permission/SpongePermissionService.java b/src/main/java/org/spongepowered/common/service/server/permission/SpongePermissionService.java index b31e2b0a85e..de2b0702280 100644 --- a/src/main/java/org/spongepowered/common/service/server/permission/SpongePermissionService.java +++ b/src/main/java/org/spongepowered/common/service/server/permission/SpongePermissionService.java @@ -28,6 +28,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.inject.Singleton; +import net.minecraft.server.permissions.PermissionLevel; import net.minecraft.server.players.ServerOpList; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.Game; @@ -67,7 +68,7 @@ public final class SpongePermissionService implements PermissionService { private final SpongeSubjectCollection defaultCollection; private final SpongeSubject defaultData; - public SpongePermissionService(final Game game, final int functionsPermissionLevel) { + public SpongePermissionService(final Game game, final PermissionLevel functionsPermissionLevel) { this.game = game; this.subjects.put(SpongePermissionService.SUBJECTS_DEFAULT, (this.defaultCollection = this.newCollection(SpongePermissionService.SUBJECTS_DEFAULT))); this.subjects.put(PermissionService.SUBJECTS_USER, new UserCollection(this)); @@ -75,11 +76,11 @@ public SpongePermissionService(final Game game, final int functionsPermissionLev this.subjects.put(PermissionService.SUBJECTS_COMMAND_BLOCK, new DataFactoryCollection( PermissionService.SUBJECTS_COMMAND_BLOCK, this, - s -> new FixedParentMemorySubjectData(s, this.getGroupForOpLevel(2).asSubjectReference()))); + s -> new FixedParentMemorySubjectData(s, this.getGroupForOpLevel(PermissionLevel.GAMEMASTERS).asSubjectReference()))); this.subjects.put(PermissionService.SUBJECTS_SYSTEM, new DataFactoryCollection( PermissionService.SUBJECTS_SYSTEM, this, - s -> new FixedParentMemorySubjectData(s, this.getGroupForOpLevel(4).asSubjectReference()) + s -> new FixedParentMemorySubjectData(s, this.getGroupForOpLevel(PermissionLevel.ALL).asSubjectReference()) // , s -> { // if (s.equals("Server")) { // return SpongeImpl.game().getServer().getConsole(); @@ -101,12 +102,12 @@ static ServerOpList getOps() { return SpongeCommon.server().getPlayerList().getOps(); } - static int getServerOpLevel() { - return SpongeCommon.server().operatorUserPermissionLevel(); + static PermissionLevel getServerOpLevel() { + return SpongeCommon.server().operatorUserPermissions().level(); } - public Subject getGroupForOpLevel(final int level) { - return this.groupSubjects().get("op_" + level); + public Subject getGroupForOpLevel(final PermissionLevel level) { + return this.groupSubjects().get("op_" + level.ordinal()); } @Override diff --git a/src/main/java/org/spongepowered/common/service/server/permission/SpongePermissions.java b/src/main/java/org/spongepowered/common/service/server/permission/SpongePermissions.java index 814e55910d2..5c092b38864 100644 --- a/src/main/java/org/spongepowered/common/service/server/permission/SpongePermissions.java +++ b/src/main/java/org/spongepowered/common/service/server/permission/SpongePermissions.java @@ -24,6 +24,7 @@ */ package org.spongepowered.common.service.server.permission; +import net.minecraft.server.permissions.PermissionLevel; import org.spongepowered.api.service.permission.PermissionService; import org.spongepowered.api.service.permission.SubjectData; import org.spongepowered.api.util.Tristate; @@ -41,7 +42,7 @@ public final class SpongePermissions { private SpongePermissions() { } - public static void populateNonCommandPermissions(final SubjectData data, final BiFunction testPermission) { + public static void populateNonCommandPermissions(final SubjectData data, final BiFunction testPermission) { if (testPermission.apply(Constants.Permissions.COMMAND_BLOCK_LEVEL, Constants.Command.COMMAND_BLOCK_COMMAND)) { data.setPermission(SubjectData.GLOBAL_CONTEXT, Constants.Permissions.COMMAND_BLOCK_PERMISSION, Tristate.TRUE); } @@ -56,9 +57,9 @@ public static void populateNonCommandPermissions(final SubjectData data, final B } } - public static void registerPermission(final PermissionService service, final String permissionNode, final int opLevel) { + public static void registerPermission(final PermissionService service, final String permissionNode, final PermissionLevel opLevel) { if (SpongePermissions.REGISTERED_PERMISSIONS.add(permissionNode)) { - if (opLevel == 0) { + if (opLevel == PermissionLevel.ALL) { // register as a default permission service.defaults() .transientSubjectData() diff --git a/src/main/java/org/spongepowered/common/service/server/permission/UserSubject.java b/src/main/java/org/spongepowered/common/service/server/permission/UserSubject.java index 6dc24539697..de5b085e69c 100644 --- a/src/main/java/org/spongepowered/common/service/server/permission/UserSubject.java +++ b/src/main/java/org/spongepowered/common/service/server/permission/UserSubject.java @@ -25,6 +25,8 @@ package org.spongepowered.common.service.server.permission; import com.mojang.authlib.GameProfile; +import net.minecraft.server.permissions.LevelBasedPermissionSet; +import net.minecraft.server.permissions.PermissionLevel; import net.minecraft.server.players.NameAndId; import net.minecraft.server.players.ServerOpListEntry; import org.spongepowered.api.Sponge; @@ -59,18 +61,18 @@ public SubjectReference parent() { @Override public void setParent(final SubjectReference parent) { - final int opLevel; + final PermissionLevel opLevel; if (parent == null) { - opLevel = 0; + opLevel = PermissionLevel.ALL; } else { if (!(parent.resolve().join() instanceof OpLevelCollection.OpLevelSubject)) { return; } opLevel = ((OpLevelCollection.OpLevelSubject) parent).opLevel(); } - if (opLevel > 0) { + if (opLevel.isEqualOrHigherThan(PermissionLevel.ALL)) { // TODO: Should bypassesPlayerLimit be true or false? - SpongePermissionService.getOps().add(new ServerOpListEntry(UserSubject.this.nameAndId, opLevel, false)); + SpongePermissionService.getOps().add(new ServerOpListEntry(UserSubject.this.nameAndId, LevelBasedPermissionSet.forLevel(opLevel), false)); } else { SpongePermissionService.getOps().remove(UserSubject.this.nameAndId); } @@ -99,16 +101,16 @@ public Optional associatedObject() { return Sponge.server().player(this.player.id()); } - int getOpLevel() { + PermissionLevel getOpLevel() { Preconditions.checkState(Sponge.isServerAvailable(), "Server is not available!"); // Query op level from server ops list based on player's game profile final ServerOpListEntry entry = SpongePermissionService.getOps().get(this.nameAndId); if (entry == null) { // Take care of singleplayer commands -- unless an op level is specified, this player follows global rules - return SpongeCommon.server().getPlayerList().isOp(this.nameAndId) ? SpongeCommon.server().operatorUserPermissionLevel() : 0; + return SpongeCommon.server().getPlayerList().isOp(this.nameAndId) ? SpongeCommon.server().operatorUserPermissions().level() : PermissionLevel.ALL; } else { - return entry.getLevel(); + return entry.permissions().level(); } } @@ -136,7 +138,7 @@ public Tristate permissionValue(final String permission, final Cause cause) { if (ret == Tristate.UNDEFINED) { ret = this.dataPermissionValue(this.collection.getService().defaults().subjectData(), permission); } - if (ret == Tristate.UNDEFINED && this.getOpLevel() >= SpongePermissionService.getServerOpLevel()) { + if (ret == Tristate.UNDEFINED && this.getOpLevel().compareTo(SpongePermissionService.getServerOpLevel()) >= 0) { ret = Tristate.TRUE; } return ret; diff --git a/src/main/java/org/spongepowered/common/tag/SpongeTagFactory.java b/src/main/java/org/spongepowered/common/tag/SpongeTagFactory.java index 66238de5e2f..6b9ea2cb690 100644 --- a/src/main/java/org/spongepowered/common/tag/SpongeTagFactory.java +++ b/src/main/java/org/spongepowered/common/tag/SpongeTagFactory.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.tag; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.TagKey; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.registry.RegistryType; @@ -37,8 +37,8 @@ public class SpongeTagFactory implements Tag.Factory { @SuppressWarnings("unchecked") public Tag of(final RegistryType registryType, final ResourceKey key) { final net.minecraft.resources.ResourceKey> regKey = - ResourceKeyAccessor.invoker$create((ResourceLocation) (Object) registryType.root(), (ResourceLocation) (Object) registryType.location()); + ResourceKeyAccessor.invoker$create((Identifier) (Object) registryType.root(), (Identifier) (Object) registryType.location()); // TagKey.create returns interned tag-keys - return (Tag) (Object) TagKey.create(regKey, ((ResourceLocation) (Object) key)); + return (Tag) (Object) TagKey.create(regKey, ((Identifier) (Object) key)); } } diff --git a/src/main/java/org/spongepowered/common/util/Constants.java b/src/main/java/org/spongepowered/common/util/Constants.java index d73e5a4bb17..d2009d24335 100644 --- a/src/main/java/org/spongepowered/common/util/Constants.java +++ b/src/main/java/org/spongepowered/common/util/Constants.java @@ -32,9 +32,8 @@ import com.mojang.brigadier.arguments.ArgumentType; import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.serialization.Codec; -import net.minecraft.Util; import net.minecraft.commands.arguments.CompoundTagArgument; -import net.minecraft.commands.arguments.ResourceLocationArgument; +import net.minecraft.commands.arguments.IdentifierArgument; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.DoubleTag; @@ -42,6 +41,8 @@ import net.minecraft.nbt.ListTag; import net.minecraft.server.level.ChunkLevel; import net.minecraft.server.level.FullChunkStatus; +import net.minecraft.server.permissions.PermissionLevel; +import net.minecraft.util.Util; import net.minecraft.world.entity.Relative; import net.minecraft.world.inventory.ClickType; import net.minecraft.world.level.Level; @@ -399,11 +400,11 @@ public static final class Permissions { public static final String SELECTOR_PERMISSION = "minecraft.selector"; public static final String COMMAND_BLOCK_PERMISSION = "minecraft.commandblock"; - public static final int COMMAND_BLOCK_LEVEL = 2; - public static final int SELECTOR_LEVEL = 2; + public static final PermissionLevel COMMAND_BLOCK_LEVEL = PermissionLevel.GAMEMASTERS; + public static final PermissionLevel SELECTOR_LEVEL = PermissionLevel.GAMEMASTERS; public static final String SPONGE_HELP_PERMISSION = "sponge.command.help"; public static final String DEBUG_HOVER_STACKTRACE = "sponge.debug.hover-stacktrace"; - public static final int SPONGE_HELP_LEVEL = 0; + public static final PermissionLevel SPONGE_HELP_LEVEL = PermissionLevel.ALL; } /** @@ -1376,7 +1377,7 @@ public static final class Command { public static final ArgumentType STANDARD_STRING_ARGUMENT_TYPE = StringArgumentType.string(); public static final ArgumentType GREEDY_STRING_ARGUMENT_TYPE = StringArgumentType.greedyString(); public static final ArgumentType NBT_ARGUMENT_TYPE = CompoundTagArgument.compoundTag(); - public static final ResourceLocationArgument RESOURCE_LOCATION_TYPE = ResourceLocationArgument.id(); + public static final IdentifierArgument RESOURCE_LOCATION_TYPE = IdentifierArgument.id(); public static final String COMMAND_BLOCK_COMMAND = ""; public static final String SELECTOR_COMMAND = "@"; public static final String SPONGE_HELP_COMMAND = "sponge:help"; diff --git a/src/main/java/org/spongepowered/common/world/SpongeDefaultWorldKeysFactory.java b/src/main/java/org/spongepowered/common/world/SpongeDefaultWorldKeysFactory.java index 10761e0865a..c47fbcb8d6e 100644 --- a/src/main/java/org/spongepowered/common/world/SpongeDefaultWorldKeysFactory.java +++ b/src/main/java/org/spongepowered/common/world/SpongeDefaultWorldKeysFactory.java @@ -32,16 +32,16 @@ public final class SpongeDefaultWorldKeysFactory implements DefaultWorldKeys.Fac @Override public ResourceKey defaultWorld() { - return (ResourceKey) (Object) Level.OVERWORLD.location(); + return (ResourceKey) (Object) Level.OVERWORLD.identifier(); } @Override public ResourceKey theNether() { - return (ResourceKey) (Object) Level.NETHER.location(); + return (ResourceKey) (Object) Level.NETHER.identifier(); } @Override public ResourceKey theEnd() { - return (ResourceKey) (Object) Level.END.location(); + return (ResourceKey) (Object) Level.END.identifier(); } } diff --git a/src/main/java/org/spongepowered/common/world/SpongeWorldTypeEffect.java b/src/main/java/org/spongepowered/common/world/SpongeWorldTypeEffect.java index 9f0193fafe2..8c77a994a16 100644 --- a/src/main/java/org/spongepowered/common/world/SpongeWorldTypeEffect.java +++ b/src/main/java/org/spongepowered/common/world/SpongeWorldTypeEffect.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.world; -import net.minecraft.world.level.dimension.BuiltinDimensionTypes; +import net.minecraft.world.level.dimension.DimensionType; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.world.WorldTypeEffect; import org.spongepowered.common.AbstractResourceKeyed; @@ -49,17 +49,17 @@ public static final class FactoryImpl implements WorldTypeEffect.Factory { @Override public WorldTypeEffect overworld() { - return DimensionEffectProvider.INSTANCE.get((ResourceKey) (Object) BuiltinDimensionTypes.OVERWORLD_EFFECTS); + return DimensionEffectProvider.INSTANCE.get(DimensionType.Skybox.OVERWORLD); } @Override public WorldTypeEffect nether() { - return DimensionEffectProvider.INSTANCE.get((ResourceKey) (Object) BuiltinDimensionTypes.NETHER_EFFECTS); + return DimensionEffectProvider.INSTANCE.get(DimensionType.Skybox.NONE); } @Override public WorldTypeEffect end() { - return DimensionEffectProvider.INSTANCE.get((ResourceKey) (Object) BuiltinDimensionTypes.END_EFFECTS); + return DimensionEffectProvider.INSTANCE.get(DimensionType.Skybox.END); } } } diff --git a/src/main/java/org/spongepowered/common/world/biome/SpongeBiomeAttributesFactory.java b/src/main/java/org/spongepowered/common/world/biome/SpongeBiomeAttributesFactory.java index 930a81c26e3..63036a76f74 100644 --- a/src/main/java/org/spongepowered/common/world/biome/SpongeBiomeAttributesFactory.java +++ b/src/main/java/org/spongepowered/common/world/biome/SpongeBiomeAttributesFactory.java @@ -85,13 +85,13 @@ public Optional defaultAttributes(final RegistryReference>> list = ImmutableList.builder(); ((OverworldBiomeBuilderAccessor) (Object) new OverworldBiomeBuilder()).accessor$addBiomes(list::add); for (final var pair : list.build()) { - DEFAULT_ATTRIBUTES.put((ResourceKey) (Object) pair.getSecond().location(), (BiomeAttributes) (Object) pair.getFirst()); + DEFAULT_ATTRIBUTES.put((ResourceKey) (Object) pair.getSecond().identifier(), (BiomeAttributes) (Object) pair.getFirst()); } // MultiNoiseBiomeSource.Preset#NETHER - DEFAULT_ATTRIBUTES.put((ResourceKey) (Object) Biomes.SOUL_SAND_VALLEY.location(), (BiomeAttributes) (Object) Climate.parameters(0.0F, -0.5F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F)); - DEFAULT_ATTRIBUTES.put((ResourceKey) (Object) Biomes.CRIMSON_FOREST.location(), (BiomeAttributes) (Object) Climate.parameters(0.4F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F)); - DEFAULT_ATTRIBUTES.put((ResourceKey) (Object) Biomes.WARPED_FOREST.location(), (BiomeAttributes) (Object) Climate.parameters(0.0F, 0.5F, 0.0F, 0.0F, 0.0F, 0.0F, 0.375F)); - DEFAULT_ATTRIBUTES.put((ResourceKey) (Object) Biomes.BASALT_DELTAS.location(), (BiomeAttributes) (Object) Climate.parameters(-0.5F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.175F)); + DEFAULT_ATTRIBUTES.put((ResourceKey) (Object) Biomes.SOUL_SAND_VALLEY.identifier(), (BiomeAttributes) (Object) Climate.parameters(0.0F, -0.5F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F)); + DEFAULT_ATTRIBUTES.put((ResourceKey) (Object) Biomes.CRIMSON_FOREST.identifier(), (BiomeAttributes) (Object) Climate.parameters(0.4F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F)); + DEFAULT_ATTRIBUTES.put((ResourceKey) (Object) Biomes.WARPED_FOREST.identifier(), (BiomeAttributes) (Object) Climate.parameters(0.0F, 0.5F, 0.0F, 0.0F, 0.0F, 0.0F, 0.375F)); + DEFAULT_ATTRIBUTES.put((ResourceKey) (Object) Biomes.BASALT_DELTAS.identifier(), (BiomeAttributes) (Object) Climate.parameters(-0.5F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.175F)); } return Optional.ofNullable(SpongeBiomeAttributesFactory.DEFAULT_ATTRIBUTES.get(biome.location())); } diff --git a/src/main/java/org/spongepowered/common/world/biome/SpongeBiomeBuilder.java b/src/main/java/org/spongepowered/common/world/biome/SpongeBiomeBuilder.java index d7729837bc5..785b867e02d 100644 --- a/src/main/java/org/spongepowered/common/world/biome/SpongeBiomeBuilder.java +++ b/src/main/java/org/spongepowered/common/world/biome/SpongeBiomeBuilder.java @@ -27,9 +27,14 @@ import net.minecraft.core.Holder; import net.minecraft.sounds.Music; import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.attribute.AmbientAdditionsSettings; +import net.minecraft.world.attribute.AmbientMoodSettings; +import net.minecraft.world.attribute.AmbientParticle; +import net.minecraft.world.attribute.AmbientSounds; +import net.minecraft.world.attribute.BackgroundMusic; +import net.minecraft.world.attribute.EnvironmentAttributeMap; +import net.minecraft.world.attribute.EnvironmentAttributes; import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.level.biome.AmbientAdditionsSettings; -import net.minecraft.world.level.biome.AmbientParticleSettings; import net.minecraft.world.level.biome.BiomeGenerationSettings; import net.minecraft.world.level.biome.BiomeSpecialEffects; import net.minecraft.world.level.biome.MobSpawnSettings; @@ -117,19 +122,22 @@ public Biome build() { final Map> features = this.manipulator.getOrElse(Keys.FEATURES, Map.of()); final List carvers = this.manipulator.getOrElse(Keys.CARVERS, List.of()); + final var attributes = EnvironmentAttributeMap.builder(); + attributes.set(EnvironmentAttributes.FOG_COLOR, fogColor.rgb()) + .set(EnvironmentAttributes.WATER_FOG_COLOR, waterFogColor.rgb()) + .set(EnvironmentAttributes.SKY_COLOR, skyColor.rgb()); final BiomeSpecialEffects.Builder effectsBuilder = new BiomeSpecialEffects.Builder() - .fogColor(fogColor.rgb()) .waterColor(waterColor.rgb()) - .waterFogColor(waterFogColor.rgb()) - .skyColor(skyColor.rgb()) .grassColorModifier((BiomeSpecialEffects.GrassColorModifier) (Object) grassColorModifier); foliageColor.ifPresent(c -> effectsBuilder.foliageColorOverride(c.rgb())); grassColor.ifPresent(c -> effectsBuilder.grassColorOverride(c.rgb())); - particleSettings.ifPresent(ps -> effectsBuilder.ambientParticle((AmbientParticleSettings) ps)); - ambientSound.ifPresent(s -> effectsBuilder.ambientLoopSound(Holder.direct((SoundEvent) (Object) s))); - ambientMood.ifPresent(m -> effectsBuilder.ambientMoodSound((net.minecraft.world.level.biome.AmbientMoodSettings) m)); - additionalSound.ifPresent(s -> effectsBuilder.ambientAdditionsSound((AmbientAdditionsSettings) s)); - backgroundMusic.ifPresent(m -> effectsBuilder.backgroundMusic((Music) (Object) m)); + final var vanillaAmbientSound = new AmbientSounds( + ambientSound.map(SoundEvent.class::cast).map(Holder::direct), + ambientMood.map(AmbientMoodSettings.class::cast), + additionalSound.map(AmbientAdditionsSettings.class::cast).map(List::of).orElse(List.of())); + attributes.set(EnvironmentAttributes.AMBIENT_SOUNDS, vanillaAmbientSound); + + backgroundMusic.ifPresent(m -> attributes.set(EnvironmentAttributes.BACKGROUND_MUSIC, new BackgroundMusic((Music) (Object) m))); final MobSpawnSettings.Builder spawnerBuilder = new MobSpawnSettings.Builder() .creatureGenerationProbability(spawnChance.floatValue()); @@ -152,7 +160,11 @@ public Biome build() { .temperatureAdjustment((net.minecraft.world.level.biome.Biome.TemperatureModifier) (Object) temperatureModifier) .specialEffects(effectsBuilder.build()) .mobSpawnSettings(spawnerBuilder.build()) - .generationSettings(generationBuilder.build()); + .generationSettings(generationBuilder.build()) + .putAttributes(attributes.build()) + ; + particleSettings.ifPresent(ps -> vanillaBuilder.setAttribute(EnvironmentAttributes.AMBIENT_PARTICLES, List.of((AmbientParticle) (Object) ps))); + return (Biome) (Object) vanillaBuilder.build(); } } diff --git a/src/main/java/org/spongepowered/common/world/biome/SpongeBiomeProviderFactory.java b/src/main/java/org/spongepowered/common/world/biome/SpongeBiomeProviderFactory.java index 5e41f562610..515a576fc3e 100644 --- a/src/main/java/org/spongepowered/common/world/biome/SpongeBiomeProviderFactory.java +++ b/src/main/java/org/spongepowered/common/world/biome/SpongeBiomeProviderFactory.java @@ -29,8 +29,8 @@ import net.minecraft.core.HolderSet; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; +import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.CheckerboardColumnBiomeSource; import net.minecraft.world.level.biome.Climate.ParameterList; @@ -114,6 +114,6 @@ private Registry registry() { } private Holder biomeHolder(final RegistryReference biome) { - return this.registry().getOrThrow(ResourceKey.create(Registries.BIOME, (ResourceLocation) (Object) biome.location())); + return this.registry().getOrThrow(ResourceKey.create(Registries.BIOME, (Identifier) (Object) biome.location())); } } diff --git a/src/main/java/org/spongepowered/common/world/biome/ambient/SpongeParticleConfigFactory.java b/src/main/java/org/spongepowered/common/world/biome/ambient/SpongeParticleConfigFactory.java index 104cd5051ec..6bc1657f8dd 100644 --- a/src/main/java/org/spongepowered/common/world/biome/ambient/SpongeParticleConfigFactory.java +++ b/src/main/java/org/spongepowered/common/world/biome/ambient/SpongeParticleConfigFactory.java @@ -25,7 +25,7 @@ package org.spongepowered.common.world.biome.ambient; import net.minecraft.core.particles.ParticleOptions; -import net.minecraft.world.level.biome.AmbientParticleSettings; +import net.minecraft.world.attribute.AmbientParticle; import org.spongepowered.api.effect.particle.ParticleType; import org.spongepowered.api.world.biome.ambient.ParticleConfig; @@ -33,6 +33,6 @@ public class SpongeParticleConfigFactory implements ParticleConfig.Factory { @Override public ParticleConfig of(final ParticleType type, final float probability) { - return (ParticleConfig) new AmbientParticleSettings(((ParticleOptions) type), probability); + return (ParticleConfig) (Object) new AmbientParticle(((ParticleOptions) type), probability); } } diff --git a/src/main/java/org/spongepowered/common/world/biome/ambient/SpongeSoundConfigFactory.java b/src/main/java/org/spongepowered/common/world/biome/ambient/SpongeSoundConfigFactory.java index 99964b0f271..7fcb108a956 100644 --- a/src/main/java/org/spongepowered/common/world/biome/ambient/SpongeSoundConfigFactory.java +++ b/src/main/java/org/spongepowered/common/world/biome/ambient/SpongeSoundConfigFactory.java @@ -27,8 +27,8 @@ import net.minecraft.core.Holder; import net.minecraft.sounds.Music; import net.minecraft.sounds.SoundEvent; -import net.minecraft.world.level.biome.AmbientAdditionsSettings; -import net.minecraft.world.level.biome.AmbientMoodSettings; +import net.minecraft.world.attribute.AmbientAdditionsSettings; +import net.minecraft.world.attribute.AmbientMoodSettings; import org.spongepowered.api.effect.sound.SoundType; import org.spongepowered.api.world.biome.ambient.SoundConfig; @@ -36,12 +36,12 @@ public class SpongeSoundConfigFactory implements SoundConfig.Factory { @Override public SoundConfig.Mood ofAmbientMood(final SoundType sound, final int tickDelay, final int searchRadius, final double distanceModifier) { - return (SoundConfig.Mood) new AmbientMoodSettings(Holder.direct((SoundEvent) (Object) sound), tickDelay, searchRadius, distanceModifier); + return (SoundConfig.Mood) (Object) new AmbientMoodSettings(Holder.direct((SoundEvent) (Object) sound), tickDelay, searchRadius, distanceModifier); } @Override public SoundConfig.Additional ofAdditional(final SoundType sound, final double tickChance) { - return (SoundConfig.Additional) new AmbientAdditionsSettings(Holder.direct((SoundEvent) (Object) sound), tickChance); + return (SoundConfig.Additional) (Object) new AmbientAdditionsSettings(Holder.direct((SoundEvent) (Object) sound), tickChance); } @Override diff --git a/src/main/java/org/spongepowered/common/world/border/PlayerOwnBorderListener.java b/src/main/java/org/spongepowered/common/world/border/PlayerOwnBorderListener.java index 2f80ec9259c..53ab10aa799 100644 --- a/src/main/java/org/spongepowered/common/world/border/PlayerOwnBorderListener.java +++ b/src/main/java/org/spongepowered/common/world/border/PlayerOwnBorderListener.java @@ -51,7 +51,7 @@ public void onSetSize(final WorldBorder border, final double newSize) { } @Override - public void onLerpSize(final WorldBorder border, final double oldSize, final double newSize, final long time) { + public void onLerpSize(WorldBorder border, double oldSize, double newSize, long time, long var8) { this.sendBorderPacket(new ClientboundSetBorderLerpSizePacket(border)); } diff --git a/src/main/java/org/spongepowered/common/world/generation/config/flat/SpongeFlatGeneratorConfig.java b/src/main/java/org/spongepowered/common/world/generation/config/flat/SpongeFlatGeneratorConfig.java index cc437a298d2..9a7c5823751 100644 --- a/src/main/java/org/spongepowered/common/world/generation/config/flat/SpongeFlatGeneratorConfig.java +++ b/src/main/java/org/spongepowered/common/world/generation/config/flat/SpongeFlatGeneratorConfig.java @@ -30,8 +30,8 @@ import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.placement.MiscOverworldPlacements; +import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.levelgen.flat.FlatLayerInfo; import net.minecraft.world.level.levelgen.placement.PlacedFeature; @@ -142,7 +142,7 @@ public FlatGeneratorConfig.Builder from(final FlatGeneratorConfig value) { final HolderLookup.RegistryLookup placedFeatureRegistryLookup = SpongeCommon.vanillaRegistry(Registries.PLACED_FEATURE); final Holder.Reference biome = - biomeRegistry.getOrThrow(ResourceKey.create(Registries.BIOME, (ResourceLocation) (Object) this.biome.location())); + biomeRegistry.getOrThrow(ResourceKey.create(Registries.BIOME, (Identifier) (Object) this.biome.location())); return (FlatGeneratorConfig) FlatLevelGeneratorSettingsAccessor.invoker$new( this.structureSets == null ? Optional.empty() : Optional.of(HolderSet.direct((Function) Holder::direct, this.structureSets)), (List) (Object) this.layers, diff --git a/src/main/java/org/spongepowered/common/world/generation/config/noise/SpongeSurfaceRulesFactory.java b/src/main/java/org/spongepowered/common/world/generation/config/noise/SpongeSurfaceRulesFactory.java index 1b66e7ef852..dcdab39802b 100644 --- a/src/main/java/org/spongepowered/common/world/generation/config/noise/SpongeSurfaceRulesFactory.java +++ b/src/main/java/org/spongepowered/common/world/generation/config/noise/SpongeSurfaceRulesFactory.java @@ -26,7 +26,7 @@ import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.SurfaceRuleData; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.levelgen.SurfaceRules; import net.minecraft.world.level.levelgen.VerticalAnchor; import net.minecraft.world.level.levelgen.placement.CaveSurface; @@ -109,7 +109,7 @@ public SurfaceRule.Condition liquidDepthFromSurface(final int offset, final int @Override public SurfaceRule.Condition biome(final List> biomes) { final var stream = biomes.stream() - .map(r -> net.minecraft.resources.ResourceKey.create(Registries.BIOME, ((ResourceLocation) (Object) r.location()))); + .map(r -> net.minecraft.resources.ResourceKey.create(Registries.BIOME, ((Identifier) (Object) r.location()))); final net.minecraft.resources.ResourceKey[] keys = stream.toArray(net.minecraft.resources.ResourceKey[]::new); return (SurfaceRule.Condition) SurfaceRules.isBiome(keys); } @@ -193,7 +193,7 @@ public SurfaceRule.Condition surfaceAbove(final SurfaceRule.VerticalAnchor ancho @Override public SurfaceRule.Condition noiseThreshold(final RegistryReference noise, final double min, final double max) { - final net.minecraft.resources.ResourceKey key = net.minecraft.resources.ResourceKey.create(Registries.NOISE, ((ResourceLocation) (Object) noise.location())); + final net.minecraft.resources.ResourceKey key = net.minecraft.resources.ResourceKey.create(Registries.NOISE, ((Identifier) (Object) noise.location())); return (SurfaceRule.Condition) SurfaceRules.noiseCondition(key, min, max); } diff --git a/src/main/java/org/spongepowered/common/world/generation/structure/jigsaw/SpongeJigsawPoolBuilder.java b/src/main/java/org/spongepowered/common/world/generation/structure/jigsaw/SpongeJigsawPoolBuilder.java index a94ab0b917c..4db93fa2b70 100644 --- a/src/main/java/org/spongepowered/common/world/generation/structure/jigsaw/SpongeJigsawPoolBuilder.java +++ b/src/main/java/org/spongepowered/common/world/generation/structure/jigsaw/SpongeJigsawPoolBuilder.java @@ -62,26 +62,26 @@ public JigsawPool.Builder add(final JigsawPoolElement element, final int weight) @Override public JigsawPool.Builder name(final ResourceKey name) { -// TODO this.name = (ResourceLocation) (Object) name; +// TODO this.name = (Identifier) (Object) name; return this; } @Override public JigsawPool.Builder fallback(final RegistryReference fallback) { -// TODO this.fallback = (ResourceLocation) (Object) fallback.location(); +// TODO this.fallback = (Identifier) (Object) fallback.location(); return this; } @Override public JigsawPool.Builder fallback(final JigsawPool fallback) { -// TODO this.fallback = (ResourceLocation) (Object) fallback.key(); +// TODO this.fallback = (Identifier) (Object) fallback.key(); return this; } @Override public JigsawPool.Builder reset() { // TODO this.name = null; - // TODO this.fallback = new ResourceLocation("empty"); + // TODO this.fallback = new Identifier("empty"); this.templates = new ArrayList<>(); return this; } diff --git a/src/main/java/org/spongepowered/common/world/server/SpongeWorldManager.java b/src/main/java/org/spongepowered/common/world/server/SpongeWorldManager.java index c3a9249a9f1..1374024d73b 100644 --- a/src/main/java/org/spongepowered/common/world/server/SpongeWorldManager.java +++ b/src/main/java/org/spongepowered/common/world/server/SpongeWorldManager.java @@ -30,22 +30,22 @@ import it.unimi.dsi.fastutil.longs.LongIterator; import net.minecraft.CrashReport; import net.minecraft.ReportedException; -import net.minecraft.Util; import net.minecraft.core.BlockPos; import net.minecraft.core.GlobalPos; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.features.MiscOverworldFeatures; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerChunkCache; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.progress.LevelLoadListener; import net.minecraft.server.level.progress.LoggingLevelLoadListener; import net.minecraft.util.TimeUtil; +import net.minecraft.util.Util; import net.minecraft.world.entity.ai.village.VillageSiege; import net.minecraft.world.entity.npc.CatSpawner; -import net.minecraft.world.entity.npc.WanderingTraderSpawner; +import net.minecraft.world.entity.npc.wanderingtrader.WanderingTraderSpawner; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.CustomSpawner; import net.minecraft.world.level.Level; @@ -308,7 +308,7 @@ private CompletableFuture> loadWorld0(final net.minecraft. try { world = this.createLevel(registryKey, levelData.stem(), storageSource, levelData.data()); } catch (final Exception e) { - return FutureUtil.completedWithException(new RuntimeException(String.format("Failed to create level data for world '%s'!", registryKey.location()), e)); + return FutureUtil.completedWithException(new RuntimeException(String.format("Failed to create level data for world '%s'!", registryKey.identifier()), e)); } return SpongeCommon.asyncScheduler().submit(() -> this.prepareLevel(world)).thenApply(w -> { @@ -615,7 +615,7 @@ public CompletableFuture deleteWorld(final ResourceKey key) { final ServerLevel loadedWorld = this.worlds.get(registryKey); if (loadedWorld != null) { if (!loadedWorld.getPlayers(p -> true).isEmpty()) { - return CompletableFuture.failedFuture(new IOException(String.format("World '%s' was told to unload but players remain.", registryKey.location()))); + return CompletableFuture.failedFuture(new IOException(String.format("World '%s' was told to unload but players remain.", registryKey.identifier()))); } final boolean disableLevelSaving = loadedWorld.noSave; @@ -675,7 +675,7 @@ private CompletableFuture unloadWorld0(final ServerLevel level) { final net.minecraft.resources.ResourceKey registryKey = level.dimension(); if (!level.getPlayers(p -> true).isEmpty()) { - return CompletableFuture.failedFuture(new IOException(String.format("World '%s' was told to unload but players remain.", registryKey.location()))); + return CompletableFuture.failedFuture(new IOException(String.format("World '%s' was told to unload but players remain.", registryKey.identifier()))); } // We first tell the world to save without flushing @@ -684,10 +684,10 @@ private CompletableFuture unloadWorld0(final ServerLevel level) { return ((IOWorkerBridge) level.getChunkSource().chunkMap.chunkScanner()).bridge$onIdle().thenComposeAsync($ -> { if (!level.getPlayers(p -> true).isEmpty()) { - return CompletableFuture.failedFuture(new IOException(String.format("World '%s' was told to unload but players remain.", registryKey.location()))); + return CompletableFuture.failedFuture(new IOException(String.format("World '%s' was told to unload but players remain.", registryKey.identifier()))); } - SpongeCommon.logger().info("Unloading world '{}'", registryKey.location()); + SpongeCommon.logger().info("Unloading world '{}'", registryKey.identifier()); final UnloadWorldEvent unloadWorldEvent = SpongeEventFactory.createUnloadWorldEvent(PhaseTracker.getInstance().currentCause(), (ServerWorld) level); SpongeCommon.post(unloadWorldEvent); @@ -783,21 +783,21 @@ private T initializeLevelData(final ResourceKey key, final Supplier loade private Optional loadLevelData(final net.minecraft.resources.ResourceKey registryKey, final ServerWorldProperties.LoadOptions.@Nullable LoadOperation loadOperation) throws IOException { - try (final LevelStorageSource.LevelStorageAccess storageSource = this.createLevelStorageAccess((ResourceKey) (Object) registryKey.location())) { + try (final LevelStorageSource.LevelStorageAccess storageSource = this.createLevelStorageAccess((ResourceKey) (Object) registryKey.identifier())) { return this.loadLevelData(storageSource, registryKey, loadOperation); } } private Optional loadLevelData(final LevelStorageSource.LevelStorageAccess storageSource, final net.minecraft.resources.ResourceKey registryKey, final ServerWorldProperties.LoadOptions.@Nullable LoadOperation loadOperation) { - return this.initializeLevelDataOptional((ResourceKey) (Object) registryKey.location(), () -> + return this.initializeLevelDataOptional((ResourceKey) (Object) registryKey.identifier(), () -> Optional.ofNullable(this.loadLevelTag(storageSource)) .map(t -> this.readLevelData(registryKey, t, loadOperation))); } private LevelDataLoadResult loadLevelData(final LevelStorageSource.LevelStorageAccess storageSource, final net.minecraft.resources.ResourceKey registryKey, final Supplier defaultSupplier) { - return this.initializeLevelData((ResourceKey) (Object) registryKey.location(), () -> + return this.initializeLevelData((ResourceKey) (Object) registryKey.identifier(), () -> Optional.ofNullable(this.loadLevelTag(storageSource)) .map(t -> this.readLevelData(registryKey, t, null)) .orElseGet(defaultSupplier)); @@ -863,7 +863,7 @@ private static WorldArchetype resolveWorldArchetype(final LevelDataAndDimensions private LevelDataLoadResult createLevelData(final net.minecraft.resources.ResourceKey registryKey, final WorldArchetype archetype) { final LevelStem levelStem = (LevelStem) (Object) archetype.type(); final PrimaryLevelData defaultLevelData = (PrimaryLevelData) this.server.getWorldData(); - final LevelSettings levelSettings = this.createLevelSettings(defaultLevelData, this.getDirectoryName((ResourceKey) (Object) registryKey.location())); + final LevelSettings levelSettings = this.createLevelSettings(defaultLevelData, this.getDirectoryName((ResourceKey) (Object) registryKey.identifier())); return new LevelDataLoadResult( new PrimaryLevelData(levelSettings, (WorldOptions) archetype.generationConfig().orElse((WorldGenerationConfig) defaultLevelData.worldGenOptions()), SpongeWorldManager.specialWorldProperty(levelStem), Lifecycle.stable()), levelStem); @@ -886,7 +886,7 @@ private ServerLevel createLevel( final LevelStorageSource.LevelStorageAccess storageSource, final PrimaryLevelData levelData) { - final ResourceKey worldKey = (ResourceKey) (Object) registryKey.location(); + final ResourceKey worldKey = (ResourceKey) (Object) registryKey.identifier(); MinecraftServerAccessor.accessor$LOGGER().info("Loading world '{}'", worldKey); @@ -907,7 +907,15 @@ private ServerLevel createLevel( this.worlds.put(registryKey, world); // Ensure that the world border is registered. - levelData.getLegacyWorldBorderSettings().ifPresent(world.getWorldBorder()::applySettings); + levelData.getLegacyWorldBorderSettings().ifPresent(legacy -> { + final var border = world.getWorldBorder(); + border.setSize(legacy.size()); + border.setCenter(legacy.centerX(), legacy.centerZ()); + border.setSafeZone(legacy.safeZone()); + border.setDamagePerBlock(legacy.damagePerBlock()); + border.setWarningTime(legacy.warningTime()); + border.setWarningBlocks(legacy.warningBlocks()); + }); PlatformHooks.INSTANCE.getWorldHooks().postLoadWorld(world); return world; } @@ -947,7 +955,7 @@ private ServerLevel prepareLevel(final ServerLevel level) { ((MinecraftServerAccessor) this.server).invoker$setupDebugLevel(worldData); } } catch (final Throwable throwable) { - final CrashReport crashReport = CrashReport.forThrowable(throwable, "Exception initializing world '" + level.dimension().location() + "'"); + final CrashReport crashReport = CrashReport.forThrowable(throwable, "Exception initializing world '" + level.dimension().identifier() + "'"); try { level.fillReportDetails(crashReport); } catch (final Throwable ignore) { @@ -974,7 +982,7 @@ private ServerLevel prepareLevel(final ServerLevel level) { * Same as loadSpawnChunks but async and without listener. */ private CompletableFuture loadSpawnChunksAsync(final ServerLevel level) { - MinecraftServerAccessor.accessor$LOGGER().info("Preparing start region for dimension {}", level.dimension().location()); + MinecraftServerAccessor.accessor$LOGGER().info("Preparing start region for dimension {}", level.dimension().identifier()); final ServerChunkCache chunkSource = level.getChunkSource(); final var respawnData = level.getRespawnData(); @@ -986,7 +994,7 @@ private CompletableFuture loadSpawnChunksAsync(final ServerLevel le Sponge.server().scheduler().submit(Task.builder().plugin(Launch.instance().platformPlugin()).execute(() -> generationFuture.complete(level)).build()); // Notify the future that we are done task.cancel(); // And cancel this task - MinecraftServerAccessor.accessor$LOGGER().info("Done preparing start region for dimension {}", level.dimension().location()); + MinecraftServerAccessor.accessor$LOGGER().info("Done preparing start region for dimension {}", level.dimension().identifier()); }).interval(10, TimeUnit.MILLISECONDS).build() ); @@ -1000,7 +1008,7 @@ private CompletableFuture loadSpawnChunksAsync(final ServerLevel le * Mimic MinecraftServer#prepareLevels */ private void loadSpawnChunks(final ServerLevel level) { - MinecraftServerAccessor.accessor$LOGGER().info("Preparing start region for dimension {}", level.dimension().location()); + MinecraftServerAccessor.accessor$LOGGER().info("Preparing start region for dimension {}", level.dimension().identifier()); final var respawnData = level.getRespawnData(); final ServerChunkCache chunkSource = level.getChunkSource(); @@ -1030,7 +1038,7 @@ private static void updateForcedChunks(final ServerLevel level, final ServerChun } public static net.minecraft.resources.ResourceKey createRegistryKey(final ResourceKey key) { - return net.minecraft.resources.ResourceKey.create(Registries.DIMENSION, (ResourceLocation) (Object) key); + return net.minecraft.resources.ResourceKey.create(Registries.DIMENSION, (Identifier) (Object) key); } private String getDirectoryName(final ResourceKey key) { diff --git a/src/main/java/org/spongepowered/common/world/server/SpongeWorldTemplate.java b/src/main/java/org/spongepowered/common/world/server/SpongeWorldTemplate.java index a04501c75b5..71665c9ac17 100644 --- a/src/main/java/org/spongepowered/common/world/server/SpongeWorldTemplate.java +++ b/src/main/java/org/spongepowered/common/world/server/SpongeWorldTemplate.java @@ -28,7 +28,7 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.kyori.adventure.text.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.Difficulty; import net.minecraft.world.level.GameType; import net.minecraft.world.level.dimension.LevelStem; @@ -50,8 +50,8 @@ public record SpongeWorldTemplate(ResourceKey key, LevelStem levelStem) { .create(r -> r .group( SpongeAdventure.STRING_CODEC.optionalFieldOf("display_name").forGetter(v -> Optional.ofNullable(v.displayName)), - ResourceLocation.CODEC.optionalFieldOf("game_mode").forGetter(v -> Optional.ofNullable(v.gameMode).map(t -> ResourceLocation.fromNamespaceAndPath("sponge", t.getName()))), - ResourceLocation.CODEC.optionalFieldOf("difficulty").forGetter(v -> Optional.ofNullable(v.difficulty).map(t -> ResourceLocation.fromNamespaceAndPath("sponge", t.getKey()))), + Identifier.CODEC.optionalFieldOf("game_mode").forGetter(v -> Optional.ofNullable(v.gameMode).map(t -> Identifier.fromNamespaceAndPath("sponge", t.getName()))), + Identifier.CODEC.optionalFieldOf("difficulty").forGetter(v -> Optional.ofNullable(v.difficulty).map(t -> Identifier.fromNamespaceAndPath("sponge", t.getKey()))), EnumCodec.create(SerializationBehavior.class).optionalFieldOf("serialization_behavior") .forGetter(v -> Optional.ofNullable(v.serializationBehavior)), Codec.INT.optionalFieldOf("view_distance").forGetter(v -> Optional.ofNullable(v.viewDistance)), diff --git a/src/main/java/org/spongepowered/common/world/server/SpongeWorldTypeBuilder.java b/src/main/java/org/spongepowered/common/world/server/SpongeWorldTypeBuilder.java index acaee5eed11..d05db9aaf4c 100644 --- a/src/main/java/org/spongepowered/common/world/server/SpongeWorldTypeBuilder.java +++ b/src/main/java/org/spongepowered/common/world/server/SpongeWorldTypeBuilder.java @@ -24,8 +24,11 @@ */ package org.spongepowered.common.world.server; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.HolderSet; import net.minecraft.util.valueproviders.UniformInt; +import net.minecraft.world.attribute.BedRule; +import net.minecraft.world.attribute.EnvironmentAttributeMap; +import net.minecraft.world.attribute.EnvironmentAttributes; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.dimension.DimensionType; import org.checkerframework.checker.nullness.qual.NonNull; @@ -45,8 +48,6 @@ import org.spongepowered.common.data.SpongeDataManager; import org.spongepowered.common.data.provider.DataProviderLookup; -import java.util.Optional; -import java.util.OptionalLong; public final class SpongeWorldTypeBuilder implements WorldType.Builder { @@ -106,16 +107,28 @@ public WorldType.Builder from(final WorldType type) { final SpongeDimensionTypes.SpongeDataSection spongeData = new SpongeDimensionTypes.SpongeDataSection(createDragonFight); try { + final var attributes = EnvironmentAttributeMap.builder(); + attributes.set(EnvironmentAttributes.PIGLINS_ZOMBIFY, !piglinSafe); + attributes.set(EnvironmentAttributes.BED_RULE, bedsUsable ? BedRule.CAN_SLEEP_WHEN_DARK : BedRule.EXPLODES); + attributes.set(EnvironmentAttributes.RESPAWN_ANCHOR_WORKS, respawnAnchorsUsable); + attributes.set(EnvironmentAttributes.CAN_START_RAID, hasRaids); final DimensionType dimensionType = - new DimensionType(fixedTime == null ? OptionalLong.empty() : OptionalLong.of(fixedTime.asTicks().ticks()), - hasSkylight, hasCeiling, scorching, natural, coordinateMultiplier, - bedsUsable, respawnAnchorsUsable, - floor, height, logicalHeight, + new DimensionType( + fixedTime != null, + hasSkylight, + hasCeiling, + coordinateMultiplier, + floor, + height, + logicalHeight, ((TagBridge) infiniburn).bridge$asVanillaTag(), - (ResourceLocation) (Object) effect.key(), ambientLighting, - Optional.empty(), - new DimensionType.MonsterSettings(piglinSafe, hasRaids, monsterSpawnLightTest, monsterSpawnBlockLightLimit)); + new DimensionType.MonsterSettings(monsterSpawnLightTest, monsterSpawnBlockLightLimit), + DimensionType.Skybox.OVERWORLD, + DimensionType.CardinalLightType.DEFAULT, + attributes.build(), + HolderSet.empty() + ); if ((Object) dimensionType instanceof DimensionTypeBridge bridge) { bridge.bridge$decorateData(spongeData); } diff --git a/src/main/java/org/spongepowered/common/world/teleport/ConfigTeleportHelperFilter.java b/src/main/java/org/spongepowered/common/world/teleport/ConfigTeleportHelperFilter.java index c26932e7c45..c7b4d28208d 100644 --- a/src/main/java/org/spongepowered/common/world/teleport/ConfigTeleportHelperFilter.java +++ b/src/main/java/org/spongepowered/common/world/teleport/ConfigTeleportHelperFilter.java @@ -26,7 +26,7 @@ import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.Block; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; @@ -66,26 +66,26 @@ private static void updateCacheIfNecessary() { final TeleportHelperCategory teleportHelperCat = SpongeConfigs.getCommon().get().teleportHelper; ConfigTeleportHelperFilter.floorBlockTypes = teleportHelperCat.unsafeFloorBlocks.stream() .map(x -> ResourceKey.resolve(x.toLowerCase(Locale.ENGLISH))) - .map(x -> (BlockType) blockRegistry.getValue((ResourceLocation) (Object) x)) + .map(x -> (BlockType) blockRegistry.getValue((Identifier) (Object) x)) .filter(Objects::nonNull) .collect(Collectors.toList()); ConfigTeleportHelperFilter.floorBlockStates = teleportHelperCat.unsafeFloorBlocks.stream() .map(x -> ResourceKey.resolve(x.toLowerCase(Locale.ENGLISH))) - .map(x -> blockRegistry.getOptional((ResourceLocation) (Object) x).map(b -> (BlockType) b) + .map(x -> blockRegistry.getOptional((Identifier) (Object) x).map(b -> (BlockType) b) .map(StateContainer::defaultState).orElse(null)) .filter(Objects::nonNull) .collect(Collectors.toList()); ConfigTeleportHelperFilter.bodyBlockTypes = teleportHelperCat.unsafeBlockBlocks.stream() .map(x -> ResourceKey.resolve(x.toLowerCase(Locale.ENGLISH))) - .map(x -> (BlockType) blockRegistry.getValue((ResourceLocation) (Object) x)) + .map(x -> (BlockType) blockRegistry.getValue((Identifier) (Object) x)) .filter(Objects::nonNull) .collect(Collectors.toList()); ConfigTeleportHelperFilter.bodyBlockStates = teleportHelperCat.unsafeBlockBlocks.stream() .map(x -> ResourceKey.resolve(x.toLowerCase(Locale.ENGLISH))) - .map(x -> blockRegistry.getOptional((ResourceLocation) (Object) x).map(b -> (BlockType) b) + .map(x -> blockRegistry.getOptional((Identifier) (Object) x).map(b -> (BlockType) b) .map(StateContainer::defaultState).orElse(null)) .filter(Objects::nonNull) .collect(Collectors.toList()); diff --git a/src/main/resources/common.accesswidener b/src/main/resources/common.accesswidener index ab0f0901043..fcfa8e442b0 100644 --- a/src/main/resources/common.accesswidener +++ b/src/main/resources/common.accesswidener @@ -19,4 +19,5 @@ accessible class net/minecraft/network/protocol/game/ServerboundInteractPacket$A accessible class net/minecraft/world/entity/monster/SpellcasterIllager$IllagerSpell accessible class net/minecraft/world/level/biome/Biome$ClimateSettings accessible class net/minecraft/core/MappedRegistry$TagSet -accessible class net/minecraft/world/level/BaseCommandBlock$CloseableCommandBlockSource \ No newline at end of file +accessible class net/minecraft/world/level/BaseCommandBlock$CloseableCommandBlockSource +accessible class net/minecraft/world/entity/monster/illager/SpellcasterIllager$IllagerSpell diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/advancements/AdvancementMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/advancements/AdvancementMixin_API.java index cc5d46c9762..a2bb2249470 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/advancements/AdvancementMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/advancements/AdvancementMixin_API.java @@ -30,7 +30,7 @@ import net.minecraft.advancements.AdvancementRewards; import net.minecraft.advancements.Criterion; import net.minecraft.advancements.DisplayInfo; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.advancement.criteria.AdvancementCriterion; import org.spongepowered.api.data.persistence.DataContainer; @@ -49,7 +49,7 @@ @Mixin(Advancement.class) public abstract class AdvancementMixin_API implements org.spongepowered.api.advancement.Advancement { - @Shadow @Final private Optional parent; + @Shadow @Final private Optional parent; @Shadow @Final private Optional display; @Shadow @Final private AdvancementRewards rewards; @Shadow @Final private Map> criteria; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/advancements/AdvancementNodeMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/advancements/AdvancementNodeMixin_API.java index 328ea086457..0fe2090c472 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/advancements/AdvancementNodeMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/advancements/AdvancementNodeMixin_API.java @@ -28,7 +28,7 @@ import net.minecraft.advancements.AdvancementHolder; import net.minecraft.advancements.AdvancementNode; import net.minecraft.advancements.DisplayInfo; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.advancement.Advancement; import org.spongepowered.api.advancement.AdvancementTree; @@ -101,14 +101,14 @@ public Optional layoutElement(final Advancement advancement) @Override public Optional layoutElement(final ResourceKey advancementKey) { - return this.impl$element(((ResourceLocation) (Object) advancementKey)); + return this.impl$element(((Identifier) (Object) advancementKey)); } - private Optional impl$element(final ResourceLocation loc) { + private Optional impl$element(final Identifier loc) { return this.impl$findElementInfo((AdvancementNode) (Object) this, loc).map(TreeLayoutElement.class::cast); } - private Optional impl$findElementInfo(AdvancementNode node, ResourceLocation key) { + private Optional impl$findElementInfo(AdvancementNode node, Identifier key) { if (node.holder().id().equals(key)) { return node.advancement().display(); } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/advancements/CriterionProgressMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/advancements/CriterionProgressMixin_API.java index 134a08854fc..c60287fe7b0 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/advancements/CriterionProgressMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/advancements/CriterionProgressMixin_API.java @@ -27,7 +27,7 @@ import net.minecraft.advancements.Advancement; import net.minecraft.advancements.AdvancementHolder; import net.minecraft.advancements.CriterionProgress; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.advancement.AdvancementProgress; import org.spongepowered.api.advancement.criteria.AdvancementCriterion; @@ -65,7 +65,7 @@ public Instant grant() { return this.obtained; } final AdvancementProgress advancementProgress = ((CriterionProgressBridge) this).bridge$getAdvancementProgress(); - final ResourceLocation key = ((AdvancementProgressBridge) advancementProgress).bridge$getAdvancementKey(); + final Identifier key = ((AdvancementProgressBridge) advancementProgress).bridge$getAdvancementKey(); final org.spongepowered.api.advancement.Advancement advancement = advancementProgress.advancement(); final AdvancementHolder holder = new AdvancementHolder(key, (Advancement) (Object) advancement); ((AdvancementProgressBridge) advancementProgress).bridge$getPlayerAdvancements().award(holder, this.criterion().name()); @@ -79,7 +79,7 @@ public Optional revoke() { } final Instant instant = this.obtained; final AdvancementProgress advancementProgress = ((CriterionProgressBridge) this).bridge$getAdvancementProgress(); - final ResourceLocation key = ((AdvancementProgressBridge) advancementProgress).bridge$getAdvancementKey(); + final Identifier key = ((AdvancementProgressBridge) advancementProgress).bridge$getAdvancementKey(); final org.spongepowered.api.advancement.Advancement advancement = advancementProgress.advancement(); final AdvancementHolder holder = new AdvancementHolder(key, (Advancement) (Object) advancement); ((AdvancementProgressBridge) advancementProgress).bridge$getPlayerAdvancements().revoke(holder, this.criterion().name()); diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/commands/arguments/selector/EntitySelectorParserMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/commands/arguments/selector/EntitySelectorParserMixin_API.java index da4b71e6e5f..889e363d0ea 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/commands/arguments/selector/EntitySelectorParserMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/commands/arguments/selector/EntitySelectorParserMixin_API.java @@ -29,7 +29,7 @@ import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; import it.unimi.dsi.fastutil.objects.Object2BooleanOpenHashMap; -import net.minecraft.advancements.critereon.MinMaxBounds; +import net.minecraft.advancements.criterion.MinMaxBounds; import net.minecraft.commands.arguments.selector.EntitySelector; import net.minecraft.commands.arguments.selector.EntitySelectorParser; import net.minecraft.core.registries.Registries; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/core/MappedRegistryMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/core/MappedRegistryMixin_API.java index 033b74fe337..62455d8f24e 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/core/MappedRegistryMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/core/MappedRegistryMixin_API.java @@ -28,7 +28,7 @@ import net.minecraft.core.HolderSet; import net.minecraft.core.MappedRegistry; import net.minecraft.core.RegistrationInfo; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.TagKey; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.registry.Registry; @@ -57,7 +57,7 @@ public abstract class MappedRegistryMixin_API implements Registry { @Shadow public abstract net.minecraft.resources.ResourceKey> shadow$key(); - private ResourceLocation impl$getKey(final T value) { + private Identifier impl$getKey(final T value) { return ((net.minecraft.core.Registry) this).getKey(value); } @@ -78,7 +78,7 @@ public RegistryType type() { public ResourceKey valueKey(final T value) { Objects.requireNonNull(value, "value"); - final ResourceLocation key = this.impl$getKey(value); + final Identifier key = this.impl$getKey(value); if (key == null) { throw new IllegalStateException(String.format("No key was found for '%s'!", value)); } @@ -155,7 +155,7 @@ public Optional> register(final ResourceKey key, Objects.requireNonNull(value, "value"); if (this.isDynamic()) { - final net.minecraft.resources.ResourceKey mcKey = net.minecraft.resources.ResourceKey.create(this.shadow$key(), (ResourceLocation) (Object) key); + final net.minecraft.resources.ResourceKey mcKey = net.minecraft.resources.ResourceKey.create(this.shadow$key(), (Identifier) (Object) key); this.shadow$register(mcKey, value, RegistrationInfo.BUILT_IN); return ((RegistryBridge) this).bridge$get(key); } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/core/RegistryMixin.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/core/RegistryMixin.java index 58a3621b0e6..6e40f5569f1 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/core/RegistryMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/core/RegistryMixin.java @@ -25,8 +25,8 @@ package org.spongepowered.common.mixin.api.minecraft.core; import net.minecraft.core.Registry; +import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import org.spongepowered.api.registry.RegistryEntry; import org.spongepowered.api.registry.RegistryType; import org.spongepowered.api.registry.ValueNotFoundException; @@ -44,15 +44,15 @@ public interface RegistryMixin extends org.spongepowered.api.registry.Registr @Shadow ResourceKey> shadow$key(); - @Shadow @Nullable ResourceLocation shadow$getKey(T object); + @Shadow @Nullable Identifier shadow$getKey(T object); - @Shadow Optional shadow$getOptional(@org.jetbrains.annotations.Nullable ResourceLocation arg); + @Shadow Optional shadow$getOptional(@org.jetbrains.annotations.Nullable Identifier arg); - @Shadow @Nullable T shadow$getValue(@org.jetbrains.annotations.Nullable ResourceLocation arg); + @Shadow @Nullable T shadow$getValue(@org.jetbrains.annotations.Nullable Identifier arg); @Override default RegistryType type() { - return RegistryType.of((org.spongepowered.api.ResourceKey) (Object) this.shadow$key().registry(), (org.spongepowered.api.ResourceKey) (Object) this.shadow$key().location()); + return RegistryType.of((org.spongepowered.api.ResourceKey) (Object) this.shadow$key().registry(), (org.spongepowered.api.ResourceKey) (Object) this.shadow$key().identifier()); } @Override @@ -67,18 +67,18 @@ default Optional findValueKey(final T value) @Override default Optional> findEntry(final org.spongepowered.api.ResourceKey key) { - return this.shadow$getOptional((ResourceLocation) (Object) Objects.requireNonNull(key, "key")).map(e -> + return this.shadow$getOptional((Identifier) (Object) Objects.requireNonNull(key, "key")).map(e -> new SpongeRegistryEntry<>((RegistryType) this.type(), key, (V) e)); } @Override default Optional findValue(final org.spongepowered.api.ResourceKey key) { - return (Optional) this.shadow$getOptional((ResourceLocation) (Object) Objects.requireNonNull(key, "key")); + return (Optional) this.shadow$getOptional((Identifier) (Object) Objects.requireNonNull(key, "key")); } @Override default V value(final org.spongepowered.api.ResourceKey key) { - final V value = (V) this.shadow$getValue((ResourceLocation) (Object) Objects.requireNonNull(key, "key")); + final V value = (V) this.shadow$getValue((Identifier) (Object) Objects.requireNonNull(key, "key")); if (value != null) { return value; } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/resources/ResourceLocationMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/resources/IdentifierMixin_API.java similarity index 93% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/resources/ResourceLocationMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/resources/IdentifierMixin_API.java index d6ff707896e..e5b73b0e2f6 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/resources/ResourceLocationMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/resources/IdentifierMixin_API.java @@ -25,7 +25,7 @@ package org.spongepowered.common.mixin.api.minecraft.resources; import net.kyori.adventure.key.Key; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.spongepowered.api.ResourceKey; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; @@ -34,12 +34,12 @@ import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Shadow; -@Mixin(ResourceLocation.class) +@Mixin(Identifier.class) @Implements(value = { @Interface(iface = Key.class, prefix = "adventure$", remap = Remap.NONE), @Interface(iface = ResourceKey.class, prefix = "resourceKey$", remap = Remap.NONE) }) -public abstract class ResourceLocationMixin_API { +public abstract class IdentifierMixin_API { // @formatter:off @Shadow public abstract String shadow$getNamespace(); @@ -48,7 +48,7 @@ public abstract class ResourceLocationMixin_API { /** * @author MrHell228 - October 6th, 2025 - * @reason Delegate synthetic method to #compareTo(Key) to avoid CCE in case Key is not a ResourceLocation + * @reason Delegate synthetic method to #compareTo(Key) to avoid CCE in case Key is not a Identifier */ @Overwrite public int compareTo(final Object obj) { diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/MinecraftServerMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/MinecraftServerMixin_API.java index b56db122407..7b8631107ef 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/MinecraftServerMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/MinecraftServerMixin_API.java @@ -41,7 +41,7 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.server.packs.repository.PackRepository; import net.minecraft.server.players.PlayerList; -import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.gamerules.GameRules; import net.minecraft.world.level.levelgen.WorldDimensions; import net.minecraft.world.level.levelgen.WorldGenSettings; import net.minecraft.world.level.storage.LevelResource; @@ -125,9 +125,6 @@ public abstract class MinecraftServerMixin_API implements SpongeServer, SpongeRe @Shadow public abstract void shadow$halt(boolean p_71263_1_); @Shadow public abstract void shadow$setPlayerIdleTimeout(int p_143006_1_); @Shadow public abstract boolean shadow$isHardcore(); - @Shadow public abstract boolean shadow$isPvpAllowed(); - @Shadow public abstract boolean shadow$isCommandBlockEnabled(); - @Shadow protected abstract boolean shadow$isSpawningMonsters(); @Shadow public abstract Commands shadow$getCommands(); @Shadow public abstract PackRepository shadow$getPackRepository(); @Shadow public abstract net.minecraft.server.packs.resources.ResourceManager shadow$getResourceManager(); @@ -251,17 +248,17 @@ public boolean isGameModeEnforced() { @Override public boolean isPVPEnabled() { - return this.shadow$isPvpAllowed(); + return this.worldData.getGameRules().get(GameRules.PVP); } @Override public boolean areCommandBlocksEnabled() { - return this.shadow$isCommandBlockEnabled(); + return this.worldData.getGameRules().get(GameRules.COMMAND_BLOCKS_WORK); } @Override public boolean isMonsterSpawnsEnabled() { - return this.shadow$isSpawningMonsters(); + return this.worldData.getGameRules().get(GameRules.SPAWN_MONSTERS); } @Override @@ -274,7 +271,7 @@ public boolean isAnimalSpawnsEnabled() { */ @Override public boolean isMultiWorldEnabled() { - return this.isSingleplayer() || ((Object) this instanceof DedicatedServer ds) && ds.getGameRules().getBoolean(GameRules.RULE_ALLOW_NETHER); + return this.isSingleplayer() || ((Object) this instanceof DedicatedServer ds) && ds.getWorldData().getGameRules().get(GameRules.ALLOW_ENTERING_NETHER_USING_PORTALS); } @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/level/ServerLevelMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/level/ServerLevelMixin_API.java index 9adc9c0b625..3e743c7b442 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/level/ServerLevelMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/level/ServerLevelMixin_API.java @@ -183,7 +183,7 @@ public ChunkGenerator generator() { @Override public ResourceKey key() { - return (ResourceKey) (Object) this.shadow$dimension().location(); + return (ResourceKey) (Object) this.shadow$dimension().identifier(); } @Override @@ -336,6 +336,7 @@ public ChunkLayout chunkLayout() { return this.api$chunkLayout; } + @SuppressWarnings("deprecation") @Override public WorldBorder setBorder(final WorldBorder border) { diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/level/ServerPlayerMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/level/ServerPlayerMixin_API.java index 07fa31df462..e438dd44399 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/level/ServerPlayerMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/level/ServerPlayerMixin_API.java @@ -40,7 +40,7 @@ import net.minecraft.network.chat.PlayerChatMessage; import net.minecraft.network.protocol.game.ClientboundDeleteChatPacket; import net.minecraft.network.protocol.game.ClientboundInitializeBorderPacket; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.MinecraftServer; import net.minecraft.server.PlayerAdvancements; import net.minecraft.server.level.ServerBossEvent; @@ -244,7 +244,7 @@ public CooldownTracker cooldownTracker() { @Override public AdvancementProgress progress(final org.spongepowered.api.advancement.Advancement advancement) { Objects.requireNonNull(advancement, "advancement"); - final AdvancementHolder holder = new AdvancementHolder((ResourceLocation) (Object) advancement.key(RegistryTypes.ADVANCEMENT), (Advancement) (Object) advancement); + final AdvancementHolder holder = new AdvancementHolder((Identifier) (Object) advancement.key(RegistryTypes.ADVANCEMENT), (Advancement) (Object) advancement); return (AdvancementProgress) this.advancements.getOrStartProgress(holder); } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/level/WorldGenRegionMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/level/WorldGenRegionMixin_API.java index 5f48b94a501..cd756c968a8 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/level/WorldGenRegionMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/level/WorldGenRegionMixin_API.java @@ -70,7 +70,7 @@ public abstract class WorldGenRegionMixin_API implements GenerationRegion { @Inject(method = "", at = @At("RETURN")) private void api$getWorldKeyOnConstruction(final ServerLevel $$0, final StaticCache2D $$1, final ChunkStep $$2, final ChunkAccess $$3, final CallbackInfo ci) { - this.api$serverWorldKey = (ResourceKey) (Object) $$0.dimension().location(); + this.api$serverWorldKey = (ResourceKey) (Object) $$0.dimension().identifier(); } @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/packs/PackResourcesMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/packs/PackResourcesMixin_API.java index 793eb7c39e5..8cea7dddbad 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/packs/PackResourcesMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/packs/PackResourcesMixin_API.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.mixin.api.minecraft.server.packs; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.packs.PackResources; import net.minecraft.server.packs.resources.IoSupplier; import org.checkerframework.checker.nullness.qual.Nullable; @@ -55,7 +55,7 @@ public interface PackResourcesMixin_API extends PackContents { // @formatter:off @Shadow String shadow$packId(); - @Shadow IoSupplier shadow$getResource(net.minecraft.server.packs.PackType var1, ResourceLocation var2) throws IOException; + @Shadow IoSupplier shadow$getResource(net.minecraft.server.packs.PackType var1, Identifier var2) throws IOException; @Shadow Set shadow$getNamespaces(net.minecraft.server.packs.PackType var1); @Shadow void shadow$listResources(net.minecraft.server.packs.PackType var1, String var2, String var3, PackResources.ResourceOutput var4); @@ -83,7 +83,7 @@ default Resource requireResource(final PackType root, final ResourcePath path) t @Nullable default Resource api$createResource(final PackType root, final ResourcePath path) throws IOException { final net.minecraft.server.packs.PackType packType = (net.minecraft.server.packs.PackType) (Object) Objects.requireNonNull(root, "root"); - final ResourceLocation loc = (ResourceLocation) (Object) Objects.requireNonNull(path, "path").key(); + final Identifier loc = (Identifier) (Object) Objects.requireNonNull(path, "path").key(); final IoSupplier ioSupplier = this.shadow$getResource(packType, loc); return new SpongeResource(path, ioSupplier.get()); } @@ -93,7 +93,7 @@ default Collection paths(final PackType root, final String namespa Objects.requireNonNull(filter, "filter"); final net.minecraft.server.packs.PackType packType = (net.minecraft.server.packs.PackType) (Object) Objects.requireNonNull(root, "root"); - final Collection resources = new HashSet<>(); + final Collection resources = new HashSet<>(); this.shadow$listResources(packType, Objects.requireNonNull(namespace, "namespace"), Objects.requireNonNull(prefix, "prefix"), (loc, stream) -> { if (filter.test((ResourceKey) (Object) loc)) { @@ -110,7 +110,7 @@ default Collection paths(final PackType root, final String namespa default boolean exists(final PackType root, final ResourcePath path) { try { final net.minecraft.server.packs.PackType packType = (net.minecraft.server.packs.PackType) (Object) Objects.requireNonNull(root, "root"); - final ResourceLocation loc = (ResourceLocation) (Object) Objects.requireNonNull(path, "path").key(); + final Identifier loc = (Identifier) (Object) Objects.requireNonNull(path, "path").key(); final IoSupplier ioSupplier = this.shadow$getResource(packType, loc); return ioSupplier != null; } catch (IOException ignored) { diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/packs/resources/ResourceManagerMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/packs/resources/ResourceManagerMixin_API.java index 90c8e37125f..f9153d508a0 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/packs/resources/ResourceManagerMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/server/packs/resources/ResourceManagerMixin_API.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.mixin.api.minecraft.server.packs.resources; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.server.packs.resources.ResourceProvider; import org.spongepowered.api.ResourceKey; @@ -49,13 +49,13 @@ public interface ResourceManagerMixin_API extends org.spongepowered.api.resource.ResourceManager { // @formatter:off - @Shadow List shadow$getResourceStack(ResourceLocation var1); - @Shadow Map shadow$listResources(String var1, Predicate var2); + @Shadow List shadow$getResourceStack(Identifier var1); + @Shadow Map shadow$listResources(String var1, Predicate var2); // @formatter:on @Override default Resource load(final ResourcePath path) throws IOException { - final ResourceLocation loc = (ResourceLocation) (Object) Objects.requireNonNull(path, "path").key(); + final Identifier loc = (Identifier) (Object) Objects.requireNonNull(path, "path").key(); final net.minecraft.server.packs.resources.Resource resource = ((ResourceProvider) this).getResourceOrThrow(loc); // TODO pass optional up to API? return new SpongeResource(resource, path); @@ -63,7 +63,7 @@ default Resource load(final ResourcePath path) throws IOException { @Override default Stream streamAll(final ResourcePath path) { - final ResourceLocation loc = (ResourceLocation) (Object) Objects.requireNonNull(path, "path").key(); + final Identifier loc = (Identifier) (Object) Objects.requireNonNull(path, "path").key(); return (Stream) (Object) this.shadow$getResourceStack(loc).stream(); } @@ -72,7 +72,7 @@ default Collection find(final String pathPrefix, final Predicate mapped = this.shadow$listResources(pathPrefix, loc -> pathFilter.test(loc.getPath())).keySet(); // TODO check filter + final Set mapped = this.shadow$listResources(pathPrefix, loc -> pathFilter.test(loc.getPath())).keySet(); // TODO check filter return mapped.stream() .map(r -> new SpongeResourcePath((ResourceKey) (Object) r)) .collect(Collectors.toList()); diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/sounds/MusicMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/sounds/MusicMixin_API.java index c865d062e76..4484c81e603 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/sounds/MusicMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/sounds/MusicMixin_API.java @@ -41,7 +41,7 @@ public abstract class MusicMixin_API implements SoundConfig.BackgroundMusic { // @formatter:off - @Shadow @Final private Holder event; + @Shadow @Final private Holder sound; @Shadow @Final private int minDelay; @Shadow @Final private int maxDelay; @Shadow @Final private boolean replaceCurrentMusic; @@ -49,7 +49,7 @@ public abstract class MusicMixin_API implements SoundConfig.BackgroundMusic { @Override public SoundType sound() { - return (SoundType) (Object) this.event.value(); + return (SoundType) (Object) this.sound.value(); } @Intrinsic diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/sounds/SoundEventMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/sounds/SoundEventMixin_API.java index 741f8b1de44..7d956dd57d7 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/sounds/SoundEventMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/sounds/SoundEventMixin_API.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.mixin.api.minecraft.sounds; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.sounds.SoundEvent; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.effect.sound.SoundType; @@ -36,7 +36,7 @@ public abstract class SoundEventMixin_API implements SoundType { //@formatter:off - @Shadow @Final private ResourceLocation location; + @Shadow @Final private Identifier location; //@formatter:on @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/tags/TagKeyMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/tags/TagKeyMixin_API.java index d4f3c45fd30..0d9ffcb60c7 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/tags/TagKeyMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/tags/TagKeyMixin_API.java @@ -25,7 +25,7 @@ package org.spongepowered.common.mixin.api.minecraft.tags; import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.TagKey; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.registry.RegistryHolder; @@ -45,12 +45,12 @@ public abstract class TagKeyMixin_API implements Tag { // @formatter:off @Shadow @Final private net.minecraft.resources.ResourceKey> registry; - @Shadow @Final private ResourceLocation location; + @Shadow @Final private Identifier location; // @formatter:on @Override public RegistryType registry() { - return RegistryType.of((ResourceKey) (Object) this.registry.registry(), (ResourceKey) (Object) this.registry.location()); + return RegistryType.of((ResourceKey) (Object) this.registry.registry(), (ResourceKey) (Object) this.registry.identifier()); } @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/biome/AmbientAdditionsSettingsMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/attribute/AmbientAdditionsSettingsMixin_API.java similarity index 83% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/biome/AmbientAdditionsSettingsMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/attribute/AmbientAdditionsSettingsMixin_API.java index 5aecb500911..efa32f2585c 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/biome/AmbientAdditionsSettingsMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/attribute/AmbientAdditionsSettingsMixin_API.java @@ -22,18 +22,22 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.level.biome; +package org.spongepowered.common.mixin.api.minecraft.world.attribute; import net.minecraft.core.Holder; import net.minecraft.sounds.SoundEvent; -import net.minecraft.world.level.biome.AmbientAdditionsSettings; +import net.minecraft.world.attribute.AmbientAdditionsSettings; import org.spongepowered.api.effect.sound.SoundType; import org.spongepowered.api.world.biome.ambient.SoundConfig; import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Implements; +import org.spongepowered.asm.mixin.Interface; +import org.spongepowered.asm.mixin.Intrinsic; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @Mixin(AmbientAdditionsSettings.class) +@Implements(@Interface(iface = SoundConfig.Additional.class, prefix = "api$")) public abstract class AmbientAdditionsSettingsMixin_API implements SoundConfig.Additional { // @formatter:off @@ -46,8 +50,8 @@ public SoundType sound() { return (SoundType) (Object) this.soundEvent.value(); } - @Override - public double tickChance() { + @Intrinsic + public double api$tickChance() { return this.tickChance; } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/biome/AmbientMoodSettingsMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/attribute/AmbientMoodSettingsMixin_API.java similarity index 81% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/biome/AmbientMoodSettingsMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/attribute/AmbientMoodSettingsMixin_API.java index 4b93d6398b0..8b6291acc0f 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/biome/AmbientMoodSettingsMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/attribute/AmbientMoodSettingsMixin_API.java @@ -22,18 +22,22 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.level.biome; +package org.spongepowered.common.mixin.api.minecraft.world.attribute; import net.minecraft.core.Holder; import net.minecraft.sounds.SoundEvent; -import net.minecraft.world.level.biome.AmbientMoodSettings; +import net.minecraft.world.attribute.AmbientMoodSettings; import org.spongepowered.api.effect.sound.SoundType; import org.spongepowered.api.world.biome.ambient.SoundConfig; import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Implements; +import org.spongepowered.asm.mixin.Interface; +import org.spongepowered.asm.mixin.Intrinsic; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @Mixin(AmbientMoodSettings.class) +@Implements(@Interface(iface = SoundConfig.Mood.class, prefix = "api$")) public abstract class AmbientMoodSettingsMixin_API implements SoundConfig.Mood { // @formatter:off @@ -48,18 +52,18 @@ public SoundType sound() { return (SoundType) (Object) this.soundEvent.value(); } - @Override - public int tickDelay() { + @Intrinsic + public int api$tickDelay() { return this.tickDelay; } - @Override - public int searchRadius() { + @Intrinsic + public int api$searchRadius() { return this.blockSearchExtent; } - @Override - public double distanceModifier() { + @Intrinsic + public double api$distanceModifier() { return this.soundPositionOffset; } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/biome/AmbientParticleSettingsMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/attribute/AmbientParticleSettingsMixin_API.java similarity index 77% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/biome/AmbientParticleSettingsMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/attribute/AmbientParticleSettingsMixin_API.java index f5cf1b58c32..48063b6e2da 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/biome/AmbientParticleSettingsMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/attribute/AmbientParticleSettingsMixin_API.java @@ -22,34 +22,38 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.level.biome; +package org.spongepowered.common.mixin.api.minecraft.world.attribute; -import net.minecraft.world.level.biome.AmbientParticleSettings; +import net.minecraft.world.attribute.AmbientParticle; import org.spongepowered.api.effect.particle.ParticleType; import org.spongepowered.api.world.biome.ambient.ParticleConfig; import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Implements; +import org.spongepowered.asm.mixin.Interface; +import org.spongepowered.asm.mixin.Intrinsic; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -@Mixin(AmbientParticleSettings.class) +@Mixin(AmbientParticle.class) +@Implements(@Interface(iface = ParticleConfig.class, prefix = "api$")) public abstract class AmbientParticleSettingsMixin_API implements ParticleConfig { // @formatter:off @Shadow @Final private float probability; - @Shadow @Final private net.minecraft.core.particles.ParticleOptions options; + @Shadow @Final private net.minecraft.core.particles.ParticleOptions particle; // @formatter:on - @Override - public float probability() { + @Intrinsic + public float api$probability() { return this.probability; } @Override public ParticleType type() { - if (this.options instanceof ParticleType type) { + if (this.particle instanceof ParticleType type) { return type; } - throw new UnsupportedOperationException("Unsupported ParticleOptions: " + this.options.getClass().getSimpleName()); + throw new UnsupportedOperationException("Unsupported ParticleOptions: " + this.particle.getClass().getSimpleName()); } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/EntityMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/EntityMixin_API.java index 8762ae965b4..e96531d90c3 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/EntityMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/EntityMixin_API.java @@ -30,7 +30,7 @@ import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; import net.minecraft.network.syncher.SynchedEntityData; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.ProblemReporter; @@ -351,7 +351,7 @@ public EntityArchetype createArchetype() { @Override public HoverEvent asHoverEvent(final UnaryOperator op) { final Registry> entityTypeRegistry = SpongeCommon.vanillaRegistry(Registries.ENTITY_TYPE); - final ResourceLocation entityTypeKey = entityTypeRegistry.getKey((net.minecraft.world.entity.EntityType) this.type()); + final Identifier entityTypeKey = entityTypeRegistry.getKey((net.minecraft.world.entity.EntityType) this.type()); return HoverEvent.showEntity(op.apply(HoverEvent.ShowEntity.showEntity((Key) (Object) entityTypeKey, this.uniqueId(), this.displayName().get()))); } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/HumanoidArmMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/HumanoidArmMixin_API.java index 3f60eab0e26..2c06dd309bb 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/HumanoidArmMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/HumanoidArmMixin_API.java @@ -30,16 +30,17 @@ import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.common.adventure.SpongeAdventure; @Mixin(HumanoidArm.class) public abstract class HumanoidArmMixin_API implements HandPreference { // @formatter:off - @Shadow @Final private String translationKey; + @Shadow @Final private net.minecraft.network.chat.Component caption; // @formatter:on @Override public Component asComponent() { - return Component.translatable(this.translationKey); + return SpongeAdventure.asAdventure(this.caption); } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/SaddleableMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/SaddleableMixin_API.java index 02a39854d39..78599dd577f 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/SaddleableMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/SaddleableMixin_API.java @@ -25,7 +25,7 @@ package org.spongepowered.common.mixin.api.minecraft.world.entity; import net.minecraft.world.entity.ItemSteerable; -import net.minecraft.world.entity.animal.horse.AbstractHorse; +import net.minecraft.world.entity.animal.equine.AbstractHorse; import org.spongepowered.asm.mixin.Mixin; // TODO - the interface is gone, but the premise of being able to use the saddle diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/ai/attributes/AttributeInstanceMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/ai/attributes/AttributeInstanceMixin_API.java index 214bcf05b37..92c9e8c6c86 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/ai/attributes/AttributeInstanceMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/ai/attributes/AttributeInstanceMixin_API.java @@ -25,7 +25,7 @@ package org.spongepowered.common.mixin.api.minecraft.world.entity.ai.attributes; import net.minecraft.core.Holder; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.entity.ai.attributes.AttributeInstance; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.entity.attribute.Attribute; @@ -59,11 +59,11 @@ public abstract class AttributeInstanceMixin_API implements Attribute { @Shadow public abstract double shadow$getValue(); @Shadow protected abstract void shadow$addModifier(net.minecraft.world.entity.ai.attributes.AttributeModifier modifier); @Shadow public abstract void shadow$removeModifier(net.minecraft.world.entity.ai.attributes.AttributeModifier modifier); - @Shadow public abstract boolean shadow$removeModifier(ResourceLocation $$0); + @Shadow public abstract boolean shadow$removeModifier(Identifier $$0); @Shadow abstract Map shadow$getModifiers(net.minecraft.world.entity.ai.attributes.AttributeModifier.Operation p_225504_1_); @Shadow public abstract Set shadow$getModifiers(); - @Shadow public abstract boolean shadow$hasModifier(final ResourceLocation $$0); - @Shadow @Nullable public abstract net.minecraft.world.entity.ai.attributes.AttributeModifier shadow$getModifier(final ResourceLocation $$0); + @Shadow public abstract boolean shadow$hasModifier(final Identifier $$0); + @Shadow @Nullable public abstract net.minecraft.world.entity.ai.attributes.AttributeModifier shadow$getModifier(final Identifier $$0); // @formatter:on @@ -99,7 +99,7 @@ public Collection modifiers(final AttributeOperation operatio @Override public boolean hasModifier(final AttributeModifier modifier) { - return this.shadow$hasModifier((ResourceLocation) (Object) modifier.key()); + return this.shadow$hasModifier((Identifier) (Object) modifier.key()); } @Override @@ -114,12 +114,12 @@ public void removeModifier(final AttributeModifier modifier) { @Override public void removeModifier(ResourceKey key) { - this.shadow$removeModifier((ResourceLocation) (Object) key); + this.shadow$removeModifier((Identifier) (Object) key); } @Override public Optional modifier(final ResourceKey key) { - return Optional.ofNullable((AttributeModifier) (Object) this.shadow$getModifier((ResourceLocation) (Object) Objects.requireNonNull(key, "uniqueId"))); + return Optional.ofNullable((AttributeModifier) (Object) this.shadow$getModifier((Identifier) (Object) Objects.requireNonNull(key, "uniqueId"))); } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/ai/attributes/AttributeModifierMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/ai/attributes/AttributeModifierMixin_API.java index 766744c19ee..5eda287243c 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/ai/attributes/AttributeModifierMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/ai/attributes/AttributeModifierMixin_API.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.mixin.api.minecraft.world.entity.ai.attributes; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.entity.ai.attributes.AttributeModifier.Operation; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.entity.attribute.AttributeModifier; @@ -39,7 +39,7 @@ public abstract class AttributeModifierMixin_API implements AttributeModifier { // @formatter:off @Shadow @Final private double amount; @Shadow @Final private Operation operation; - @Shadow @Final private ResourceLocation id; + @Shadow @Final private Identifier id; // @formatter:on diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/BeeMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/bee/BeeMixin_API.java similarity index 90% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/BeeMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/bee/BeeMixin_API.java index 6240a3fb372..1ba919e52be 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/BeeMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/bee/BeeMixin_API.java @@ -22,12 +22,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.bee; import org.spongepowered.api.entity.living.animal.Bee; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.animal.AnimalMixin_API; -@Mixin(net.minecraft.world.entity.animal.Bee.class) +@Mixin(net.minecraft.world.entity.animal.bee.Bee.class) public abstract class BeeMixin_API extends AnimalMixin_API implements Bee { } diff --git a/src/accessors/java/org/spongepowered/common/accessor/world/level/chunk/storage/ChunkStorageAccessor.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/camel/CamelHuskMixin_API.java similarity index 78% rename from src/accessors/java/org/spongepowered/common/accessor/world/level/chunk/storage/ChunkStorageAccessor.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/camel/CamelHuskMixin_API.java index ce533c3c8c3..b40ef8a9156 100644 --- a/src/accessors/java/org/spongepowered/common/accessor/world/level/chunk/storage/ChunkStorageAccessor.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/camel/CamelHuskMixin_API.java @@ -22,15 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.accessor.world.level.chunk.storage; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.camel; -import net.minecraft.world.level.chunk.storage.ChunkStorage; -import net.minecraft.world.level.chunk.storage.IOWorker; +import net.minecraft.world.entity.animal.camel.CamelHusk; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(ChunkStorage.class) -public interface ChunkStorageAccessor { +@Mixin(CamelHusk.class) +public abstract class CamelHuskMixin_API extends CamelMixin_API implements org.spongepowered.api.entity.living.animal.camel.CamelHusk { - @Accessor("worker") IOWorker accessor$worker(); } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/camel/CamelMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/camel/CamelMixin_API.java index 4ff0a35515b..a4d4a4ddfb2 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/camel/CamelMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/camel/CamelMixin_API.java @@ -26,9 +26,9 @@ import net.minecraft.world.entity.animal.camel.Camel; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.common.mixin.api.minecraft.world.entity.animal.horse.AbstractHorseMixin_API; +import org.spongepowered.common.mixin.api.minecraft.world.entity.animal.equine.AbstractHorseMixin_API; @Mixin(Camel.class) -public abstract class CamelMixin_API extends AbstractHorseMixin_API implements org.spongepowered.api.entity.living.animal.horse.Camel { +public abstract class CamelMixin_API extends AbstractHorseMixin_API implements org.spongepowered.api.entity.living.animal.camel.Camel { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/ChickenMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/chicken/ChickenMixin_API.java similarity index 91% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/ChickenMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/chicken/ChickenMixin_API.java index f118e88bf8c..6c6d746ded8 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/ChickenMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/chicken/ChickenMixin_API.java @@ -22,16 +22,17 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.chicken; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.living.animal.Chicken; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.animal.AnimalMixin_API; import java.util.Set; -@Mixin(net.minecraft.world.entity.animal.Chicken.class) +@Mixin(net.minecraft.world.entity.animal.chicken.Chicken.class) public abstract class ChickenMixin_API extends AnimalMixin_API implements Chicken { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/ChickenVariantMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/chicken/ChickenVariantMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/ChickenVariantMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/chicken/ChickenVariantMixin_API.java index deded3ad5d8..22f67fd08dd 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/ChickenVariantMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/chicken/ChickenVariantMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.chicken; -import net.minecraft.world.entity.animal.ChickenVariant; +import net.minecraft.world.entity.animal.chicken.ChickenVariant; import org.spongepowered.asm.mixin.Mixin; @Mixin(ChickenVariant.class) diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/AbstractCowMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/cow/AbstractCowMixin_API.java similarity index 89% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/AbstractCowMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/cow/AbstractCowMixin_API.java index fe2a7abd0a9..5177b50a11e 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/AbstractCowMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/cow/AbstractCowMixin_API.java @@ -22,12 +22,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.cow; import org.spongepowered.api.entity.living.animal.cow.Cow; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.animal.AnimalMixin_API; -@Mixin(net.minecraft.world.entity.animal.AbstractCow.class) +@Mixin(net.minecraft.world.entity.animal.cow.AbstractCow.class) public abstract class AbstractCowMixin_API extends AnimalMixin_API implements Cow { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/CowVariantMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/cow/CowVariantMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/CowVariantMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/cow/CowVariantMixin_API.java index 3b1c66dadec..bd48197db3a 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/CowVariantMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/cow/CowVariantMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.cow; -import net.minecraft.world.entity.animal.CowVariant; +import net.minecraft.world.entity.animal.cow.CowVariant; import org.spongepowered.asm.mixin.Mixin; @Mixin(CowVariant.class) diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/MushroomCowMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/cow/MushroomCowMixin_API.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/MushroomCowMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/cow/MushroomCowMixin_API.java index 5eb015f2ca3..7acf88dae03 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/MushroomCowMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/cow/MushroomCowMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.cow; -import net.minecraft.world.entity.animal.MushroomCow; +import net.minecraft.world.entity.animal.cow.MushroomCow; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.living.animal.cow.Mooshroom; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/MushroomCow_MushroomTypeMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/cow/MushroomCow_MushroomTypeMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/MushroomCow_MushroomTypeMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/cow/MushroomCow_MushroomTypeMixin_API.java index d9c14c85fb8..7cc2ed7cd13 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/MushroomCow_MushroomTypeMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/cow/MushroomCow_MushroomTypeMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.cow; -import net.minecraft.world.entity.animal.MushroomCow; +import net.minecraft.world.entity.animal.cow.MushroomCow; import org.spongepowered.api.data.type.MooshroomType; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/DolphinMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/dolphin/DolphinMixin_API.java similarity index 91% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/DolphinMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/dolphin/DolphinMixin_API.java index 2cd310baace..913c2e43aad 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/DolphinMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/dolphin/DolphinMixin_API.java @@ -22,16 +22,17 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.dolphin; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.living.aquatic.Dolphin; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.animal.AgeableWaterCreatureMixin_API; import java.util.Set; -@Mixin(net.minecraft.world.entity.animal.Dolphin.class) +@Mixin(net.minecraft.world.entity.animal.dolphin.Dolphin.class) public abstract class DolphinMixin_API extends AgeableWaterCreatureMixin_API implements Dolphin { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/AbstractChestedHorseMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/AbstractChestedHorseMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/AbstractChestedHorseMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/AbstractChestedHorseMixin_API.java index bcfa475021b..d01a3c75354 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/AbstractChestedHorseMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/AbstractChestedHorseMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.horse; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.equine; -import net.minecraft.world.entity.animal.horse.AbstractChestedHorse; +import net.minecraft.world.entity.animal.equine.AbstractChestedHorse; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.living.animal.horse.PackHorse; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/AbstractHorseMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/AbstractHorseMixin_API.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/AbstractHorseMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/AbstractHorseMixin_API.java index 40361de0a52..928067e27ac 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/AbstractHorseMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/AbstractHorseMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.horse; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.equine; -import net.minecraft.world.entity.animal.horse.AbstractHorse; +import net.minecraft.world.entity.animal.equine.AbstractHorse; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.living.animal.horse.HorseLike; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/DonkeyMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/DonkeyMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/DonkeyMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/DonkeyMixin_API.java index 91ea7ac9fde..dcc5844e28c 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/DonkeyMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/DonkeyMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.horse; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.equine; import org.spongepowered.api.entity.living.animal.horse.Donkey; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.animal.horse.Donkey.class) +@Mixin(net.minecraft.world.entity.animal.equine.Donkey.class) public abstract class DonkeyMixin_API extends AbstractChestedHorseMixin_API implements Donkey { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/HorseMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/HorseMixin_API.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/HorseMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/HorseMixin_API.java index a2c8b02512b..a0f8c98e931 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/HorseMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/HorseMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.horse; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.equine; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; @@ -31,7 +31,7 @@ import java.util.Set; -@Mixin(net.minecraft.world.entity.animal.horse.Horse.class) +@Mixin(net.minecraft.world.entity.animal.equine.Horse.class) public abstract class HorseMixin_API extends AbstractHorseMixin_API implements Horse { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/LLama_VariantMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/LLama_VariantMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/LLama_VariantMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/LLama_VariantMixin_API.java index 4eecb60c0db..358d10d77d1 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/LLama_VariantMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/LLama_VariantMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.horse; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.equine; import org.spongepowered.api.data.type.LlamaType; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.animal.horse.Llama.Variant.class) +@Mixin(net.minecraft.world.entity.animal.equine.Llama.Variant.class) public abstract class LLama_VariantMixin_API implements LlamaType { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/LlamaMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/LlamaMixin_API.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/LlamaMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/LlamaMixin_API.java index 8d4a0ad8d70..23043e38db9 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/LlamaMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/LlamaMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.horse; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.equine; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; @@ -31,7 +31,7 @@ import java.util.Set; -@Mixin(net.minecraft.world.entity.animal.horse.Llama.class) +@Mixin(net.minecraft.world.entity.animal.equine.Llama.class) public abstract class LlamaMixin_API extends AbstractChestedHorseMixin_API implements Llama { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/MarkingsMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/MarkingsMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/MarkingsMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/MarkingsMixin_API.java index 94b206d3e46..34d0c42a4d4 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/MarkingsMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/MarkingsMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.horse; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.equine; import org.spongepowered.api.data.type.HorseStyle; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.animal.horse.Markings.class) +@Mixin(net.minecraft.world.entity.animal.equine.Markings.class) public abstract class MarkingsMixin_API implements HorseStyle { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/MuleMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/MuleMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/MuleMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/MuleMixin_API.java index 1e353d79fa3..a9b64f76717 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/MuleMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/MuleMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.horse; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.equine; import org.spongepowered.api.entity.living.animal.horse.Mule; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.animal.horse.Mule.class) +@Mixin(net.minecraft.world.entity.animal.equine.Mule.class) public abstract class MuleMixin_API extends AbstractChestedHorseMixin_API implements Mule { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/SkeletonHorseMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/SkeletonHorseMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/SkeletonHorseMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/SkeletonHorseMixin_API.java index 200470d74e1..ae45c84d937 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/SkeletonHorseMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/SkeletonHorseMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.horse; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.equine; import org.spongepowered.api.entity.living.animal.horse.SkeletonHorse; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.animal.horse.SkeletonHorse.class) +@Mixin(net.minecraft.world.entity.animal.equine.SkeletonHorse.class) public abstract class SkeletonHorseMixin_API extends AbstractHorseMixin_API implements SkeletonHorse { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/TraderLlamaMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/TraderLlamaMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/TraderLlamaMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/TraderLlamaMixin_API.java index a9b6f1326bd..bfe88eb7699 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/TraderLlamaMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/TraderLlamaMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.horse; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.equine; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; @@ -31,7 +31,7 @@ import java.util.Set; -@Mixin(net.minecraft.world.entity.animal.horse.TraderLlama.class) +@Mixin(net.minecraft.world.entity.animal.equine.TraderLlama.class) public abstract class TraderLlamaMixin_API extends LlamaMixin_API implements TraderLlama { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/VariantMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/VariantMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/VariantMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/VariantMixin_API.java index 5b2000ff06b..485c8aad0cd 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/VariantMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/VariantMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.horse; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.equine; import org.spongepowered.api.data.type.HorseColor; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.animal.horse.Variant.class) +@Mixin(net.minecraft.world.entity.animal.equine.Variant.class) public abstract class VariantMixin_API implements HorseColor { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/ZombieHorseMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/ZombieHorseMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/ZombieHorseMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/ZombieHorseMixin_API.java index f0a45b55f61..a0d97e58088 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/horse/ZombieHorseMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/equine/ZombieHorseMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.horse; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.equine; import org.spongepowered.api.entity.living.animal.horse.ZombieHorse; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.animal.horse.ZombieHorse.class) +@Mixin(net.minecraft.world.entity.animal.equine.ZombieHorse.class) public abstract class ZombieHorseMixin_API extends AbstractHorseMixin_API implements ZombieHorse { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/CatMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/feline/CatMixin_API.java similarity index 97% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/CatMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/feline/CatMixin_API.java index d2b9f0e2f6e..49a7468a23f 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/CatMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/feline/CatMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.feline; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; @@ -32,7 +32,7 @@ import java.util.Set; -@Mixin(net.minecraft.world.entity.animal.Cat.class) +@Mixin(net.minecraft.world.entity.animal.feline.Cat.class) public abstract class CatMixin_API extends TamableAnimalMixin_API implements Cat { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/CatVariantMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/feline/CatVariantMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/CatVariantMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/feline/CatVariantMixin_API.java index 35500e6c8f6..cc34f8928c5 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/CatVariantMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/feline/CatVariantMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.feline; -import net.minecraft.world.entity.animal.CatVariant; +import net.minecraft.world.entity.animal.feline.CatVariant; import org.spongepowered.api.data.type.CatType; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/OcelotMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/feline/OcelotMixin_API.java similarity index 91% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/OcelotMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/feline/OcelotMixin_API.java index ec8c142d6d5..67ee26ea5b9 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/OcelotMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/feline/OcelotMixin_API.java @@ -22,16 +22,17 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.feline; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.living.animal.Ocelot; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.animal.AnimalMixin_API; import java.util.Set; -@Mixin(net.minecraft.world.entity.animal.Ocelot.class) +@Mixin(net.minecraft.world.entity.animal.feline.Ocelot.class) public abstract class OcelotMixin_API extends AnimalMixin_API implements Ocelot { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/AbstractFishMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/AbstractFishMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/AbstractFishMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/AbstractFishMixin_API.java index be40d35ffc3..dd07e93ece7 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/AbstractFishMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/AbstractFishMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.fish; -import net.minecraft.world.entity.animal.AbstractFish; +import net.minecraft.world.entity.animal.fish.AbstractFish; import org.spongepowered.api.entity.living.aquatic.fish.Fish; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/AbstractSchoolingFishMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/AbstractSchoolingFishMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/AbstractSchoolingFishMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/AbstractSchoolingFishMixin_API.java index bbb9cfd9779..93a63da464e 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/AbstractSchoolingFishMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/AbstractSchoolingFishMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.fish; -import net.minecraft.world.entity.animal.AbstractSchoolingFish; +import net.minecraft.world.entity.animal.fish.AbstractSchoolingFish; import org.spongepowered.api.entity.living.aquatic.fish.school.SchoolingFish; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/CodMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/CodMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/CodMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/CodMixin_API.java index 5861ec74078..543e8b13f6c 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/CodMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/CodMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.fish; import org.spongepowered.api.entity.living.aquatic.fish.school.Cod; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.animal.Cod.class) +@Mixin(net.minecraft.world.entity.animal.fish.Cod.class) public abstract class CodMixin_API extends AbstractSchoolingFishMixin_API implements Cod { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/PufferfishMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/PufferfishMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/PufferfishMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/PufferfishMixin_API.java index 08db79bbddb..584d634143c 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/PufferfishMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/PufferfishMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.fish; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; @@ -31,7 +31,7 @@ import java.util.Set; -@Mixin(net.minecraft.world.entity.animal.Pufferfish.class) +@Mixin(net.minecraft.world.entity.animal.fish.Pufferfish.class) public abstract class PufferfishMixin_API extends AbstractFishMixin_API implements Pufferfish { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/SalmonMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/SalmonMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/SalmonMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/SalmonMixin_API.java index 77c0cbd43b2..a42d21c43bc 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/SalmonMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/SalmonMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.fish; import org.spongepowered.api.entity.living.aquatic.fish.school.Salmon; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.animal.Salmon.class) +@Mixin(net.minecraft.world.entity.animal.fish.Salmon.class) public abstract class SalmonMixin_API extends AbstractSchoolingFishMixin_API implements Salmon { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/SalmonVariantMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/SalmonVariantMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/SalmonVariantMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/SalmonVariantMixin_API.java index 6830b15c2c1..605c6e1b15f 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/SalmonVariantMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/SalmonVariantMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.fish; -import net.minecraft.world.entity.animal.Salmon; +import net.minecraft.world.entity.animal.fish.Salmon; import org.spongepowered.api.data.type.SalmonSize; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/TropicalFishMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/TropicalFishMixin_API.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/TropicalFishMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/TropicalFishMixin_API.java index c899e8468dc..eaba0d4a2d7 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/TropicalFishMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/TropicalFishMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.fish; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; @@ -31,7 +31,7 @@ import java.util.Set; -@Mixin(net.minecraft.world.entity.animal.TropicalFish.class) +@Mixin(net.minecraft.world.entity.animal.fish.TropicalFish.class) public abstract class TropicalFishMixin_API extends AbstractSchoolingFishMixin_API implements TropicalFish { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/TropicalFish_PatternMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/TropicalFish_PatternMixin_API.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/TropicalFish_PatternMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/TropicalFish_PatternMixin_API.java index f4fe5383e8c..1eddb7e0c7e 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/TropicalFish_PatternMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/TropicalFish_PatternMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.fish; -import net.minecraft.world.entity.animal.TropicalFish; +import net.minecraft.world.entity.animal.fish.TropicalFish; import org.spongepowered.api.data.type.TropicalFishShape; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/WaterAnimalMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/WaterAnimalMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/WaterAnimalMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/WaterAnimalMixin_API.java index 8ae63dc801e..bff1d7b0200 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/WaterAnimalMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fish/WaterAnimalMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.fish; -import net.minecraft.world.entity.animal.WaterAnimal; +import net.minecraft.world.entity.animal.fish.WaterAnimal; import org.spongepowered.api.entity.living.aquatic.Aquatic; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.common.mixin.api.minecraft.world.entity.MobMixin_API; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/FoxMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fox/FoxMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/FoxMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fox/FoxMixin_API.java index 8cff309148a..b3bcea4ad09 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/FoxMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fox/FoxMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.fox; import net.minecraft.world.entity.EntityReference; import net.minecraft.world.entity.LivingEntity; @@ -35,12 +35,13 @@ import org.spongepowered.asm.mixin.Intrinsic; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.common.mixin.api.minecraft.world.entity.animal.AnimalMixin_API; import java.util.Set; import java.util.UUID; import java.util.stream.Stream; -@Mixin(net.minecraft.world.entity.animal.Fox.class) +@Mixin(net.minecraft.world.entity.animal.fox.Fox.class) @Implements(@Interface(iface = Fox.class, prefix = "fox$", remap = Remap.NONE)) public abstract class FoxMixin_API extends AnimalMixin_API implements Fox { diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/Fox_VariantMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fox/Fox_VariantMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/Fox_VariantMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fox/Fox_VariantMixin_API.java index b7af53b114c..9b44a0350a4 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/Fox_VariantMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/fox/Fox_VariantMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.fox; -import net.minecraft.world.entity.animal.Fox; +import net.minecraft.world.entity.animal.fox.Fox; import org.spongepowered.api.data.type.FoxType; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/FrogVariantMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/frog/FrogVariantMixin_API.java similarity index 99% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/FrogVariantMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/frog/FrogVariantMixin_API.java index 6de70dbb983..91b73533871 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/FrogVariantMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/frog/FrogVariantMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.frog; import net.minecraft.world.entity.animal.frog.FrogVariant; import org.spongepowered.api.data.type.FrogType; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/frog/TadpoleMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/frog/TadpoleMixin_API.java index aee39cf5fc7..36bbe9578c0 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/frog/TadpoleMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/frog/TadpoleMixin_API.java @@ -27,7 +27,7 @@ import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.living.animal.frog.Tadpole; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.common.mixin.api.minecraft.world.entity.animal.AbstractFishMixin_API; +import org.spongepowered.common.mixin.api.minecraft.world.entity.animal.fish.AbstractFishMixin_API; import java.util.Set; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/AbstractGolemMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/golem/AbstractGolemMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/AbstractGolemMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/golem/AbstractGolemMixin_API.java index bc1a53beaa9..58bb6ad99fe 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/AbstractGolemMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/golem/AbstractGolemMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.golem; -import net.minecraft.world.entity.animal.AbstractGolem; +import net.minecraft.world.entity.animal.golem.AbstractGolem; import org.spongepowered.api.entity.living.golem.Golem; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.common.mixin.api.minecraft.world.entity.PathfinderMobMixin_API; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/server/commands/GameRuleCommandMixin.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/golem/CopperGolemMixin_API.java similarity index 51% rename from src/mixins/java/org/spongepowered/common/mixin/core/server/commands/GameRuleCommandMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/golem/CopperGolemMixin_API.java index 06440f66c08..e759e96fcf0 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/server/commands/GameRuleCommandMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/golem/CopperGolemMixin_API.java @@ -22,27 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.server.commands; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.golem; -import com.mojang.brigadier.context.CommandContext; -import net.minecraft.commands.CommandSourceStack; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.commands.GameRuleCommand; -import net.minecraft.world.level.GameRules; +import org.spongepowered.api.entity.living.golem.CopperGolem; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; -@Mixin(GameRuleCommand.class) -public abstract class GameRuleCommandMixin { +@Mixin(net.minecraft.world.entity.animal.golem.CopperGolem.class) +public abstract class CopperGolemMixin_API extends AbstractGolemMixin_API implements CopperGolem { - @Redirect(method = "setRule", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;getGameRules()Lnet/minecraft/world/level/GameRules;")) - private static GameRules impl$usePerWorldGameRules(final MinecraftServer server, final CommandContext context) { - return context.getSource().getLevel().getGameRules(); - } - - @Redirect(method = "queryRule", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;getGameRules()Lnet/minecraft/world/level/GameRules;")) - private static GameRules impl$usePerWorldGameRules(final MinecraftServer server, final CommandSourceStack source) { - return source.getLevel().getGameRules(); - } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/IronGolemMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/golem/IronGolemMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/IronGolemMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/golem/IronGolemMixin_API.java index d6917022ae5..6c98ba3f6e2 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/IronGolemMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/golem/IronGolemMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.golem; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; @@ -31,7 +31,7 @@ import java.util.Set; -@Mixin(net.minecraft.world.entity.animal.IronGolem.class) +@Mixin(net.minecraft.world.entity.animal.golem.IronGolem.class) public abstract class IronGolemMixin_API extends AbstractGolemMixin_API implements IronGolem { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/SnowGolemMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/golem/SnowGolemMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/SnowGolemMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/golem/SnowGolemMixin_API.java index e8c23f3e482..6c3f2ed4d08 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/SnowGolemMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/golem/SnowGolemMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.golem; import org.spongepowered.api.entity.living.golem.SnowGolem; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.animal.SnowGolem.class) +@Mixin(net.minecraft.world.entity.animal.golem.SnowGolem.class) public abstract class SnowGolemMixin_API extends AbstractGolemMixin_API implements SnowGolem { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/nautilus/AbstractNautilusMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/nautilus/AbstractNautilusMixin_API.java new file mode 100644 index 00000000000..9104f1b2163 --- /dev/null +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/nautilus/AbstractNautilusMixin_API.java @@ -0,0 +1,63 @@ +/* + * This file is part of Sponge, licensed under the MIT License (MIT). + * + * Copyright (c) SpongePowered + * Copyright (c) contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.nautilus; + +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.entity.animal.nautilus.AbstractNautilus; +import org.spongepowered.api.data.Keys; +import org.spongepowered.api.data.value.Value; +import org.spongepowered.api.entity.living.animal.NautilusLike; +import org.spongepowered.api.item.inventory.Carrier; +import org.spongepowered.api.item.inventory.type.CarriedInventory; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.common.inventory.util.InventoryUtil; +import org.spongepowered.common.mixin.api.minecraft.world.entity.TamableAnimalMixin_API; + +import java.util.Set; + +@Mixin(AbstractNautilus.class) +public abstract class AbstractNautilusMixin_API extends TamableAnimalMixin_API implements NautilusLike { + + @Shadow protected SimpleContainer inventory; + + @Override + protected Set> api$getVanillaValues() { + final Set> values = super.api$getVanillaValues(); + + values.add(this.requireValue(Keys.MAX_HEALTH).asImmutable()); + values.add(this.requireValue(Keys.IS_TAMED).asImmutable()); + + this.getValue(Keys.OWNER).map(Value::asImmutable).ifPresent(values::add); + + return values; + } + + + @Override + public CarriedInventory inventory() { + return InventoryUtil.carriedWrapperInventory(this.inventory, this); + } +} diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/nautilus/NautilusMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/nautilus/NautilusMixin_API.java new file mode 100644 index 00000000000..6d7055a6163 --- /dev/null +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/nautilus/NautilusMixin_API.java @@ -0,0 +1,32 @@ +/* + * This file is part of Sponge, licensed under the MIT License (MIT). + * + * Copyright (c) SpongePowered + * Copyright (c) contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.nautilus; + +import org.spongepowered.api.entity.living.animal.Nautilus; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(net.minecraft.world.entity.animal.nautilus.Nautilus.class) +public abstract class NautilusMixin_API extends AbstractNautilusMixin_API implements Nautilus { +} diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/MinecartCommandBlock_MinecartCommandBaseMixin.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/nautilus/ZombieNautilusMixin_API.java similarity index 62% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/MinecartCommandBlock_MinecartCommandBaseMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/nautilus/ZombieNautilusMixin_API.java index b1892560878..d01987a1957 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/MinecartCommandBlock_MinecartCommandBaseMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/nautilus/ZombieNautilusMixin_API.java @@ -22,25 +22,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.vehicle; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.nautilus; -import net.minecraft.world.entity.vehicle.MinecartCommandBlock; -import org.spongepowered.api.service.permission.Subject; -import org.spongepowered.api.service.permission.SubjectProxy; -import org.spongepowered.asm.mixin.Final; +import org.spongepowered.api.entity.living.animal.ZombieNautilus; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.common.mixin.core.world.BaseCommandBlockMixin; -@Mixin(MinecartCommandBlock.MinecartCommandBase.class) -public abstract class MinecartCommandBlock_MinecartCommandBaseMixin extends BaseCommandBlockMixin implements SubjectProxy { - - // @formatter:off - @Shadow @Final MinecartCommandBlock this$0; - // @formatter:on - - @Override - public Subject subject() { - return (Subject) this.this$0; - } +@Mixin(net.minecraft.world.entity.animal.nautilus.ZombieNautilus.class) +public abstract class ZombieNautilusMixin_API extends AbstractNautilusMixin_API implements ZombieNautilus { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/PandaMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/panda/PandaMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/PandaMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/panda/PandaMixin_API.java index 1c801518f22..8ed5f345a23 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/PandaMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/panda/PandaMixin_API.java @@ -22,16 +22,17 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.panda; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.living.animal.Panda; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.animal.AnimalMixin_API; import java.util.Set; -@Mixin(net.minecraft.world.entity.animal.Panda.class) +@Mixin(net.minecraft.world.entity.animal.panda.Panda.class) public abstract class PandaMixin_API extends AnimalMixin_API implements Panda { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/Panda_GeneMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/panda/Panda_GeneMixin_API.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/Panda_GeneMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/panda/Panda_GeneMixin_API.java index b4648c09241..b200fa35273 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/Panda_GeneMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/panda/Panda_GeneMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.panda; -import net.minecraft.world.entity.animal.Panda; +import net.minecraft.world.entity.animal.panda.Panda; import org.spongepowered.api.data.type.PandaGene; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/ParrotMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/parrot/ParrotMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/ParrotMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/parrot/ParrotMixin_API.java index 4b11b38bb91..71d2039381f 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/ParrotMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/parrot/ParrotMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.parrot; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; @@ -31,7 +31,7 @@ import java.util.Set; -@Mixin(net.minecraft.world.entity.animal.Parrot.class) +@Mixin(net.minecraft.world.entity.animal.parrot.Parrot.class) public abstract class ParrotMixin_API extends ShoulderRidingEntityMixin_API implements Parrot { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/Parrot_VariantMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/parrot/Parrot_VariantMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/Parrot_VariantMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/parrot/Parrot_VariantMixin_API.java index b9b6f5798a9..4e83cb7e5a3 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/Parrot_VariantMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/parrot/Parrot_VariantMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.parrot; import org.spongepowered.api.data.type.ParrotType; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.animal.Parrot.Variant.class) +@Mixin(net.minecraft.world.entity.animal.parrot.Parrot.Variant.class) public abstract class Parrot_VariantMixin_API implements ParrotType { diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/ShoulderRidingEntityMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/parrot/ShoulderRidingEntityMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/ShoulderRidingEntityMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/parrot/ShoulderRidingEntityMixin_API.java index 44e88b5417b..50a696ee04d 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/ShoulderRidingEntityMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/parrot/ShoulderRidingEntityMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.parrot; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.common.mixin.api.minecraft.world.entity.TamableAnimalMixin_API; -@Mixin(net.minecraft.world.entity.animal.ShoulderRidingEntity.class) +@Mixin(net.minecraft.world.entity.animal.parrot.ShoulderRidingEntity.class) public abstract class ShoulderRidingEntityMixin_API extends TamableAnimalMixin_API { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/PigMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/pig/PigMixin_API.java similarity index 92% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/PigMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/pig/PigMixin_API.java index 99a9bb2709b..a77790bf21d 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/PigMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/pig/PigMixin_API.java @@ -22,16 +22,17 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.pig; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.living.animal.Pig; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.animal.AnimalMixin_API; import java.util.Set; -@Mixin(net.minecraft.world.entity.animal.Pig.class) +@Mixin(net.minecraft.world.entity.animal.pig.Pig.class) public abstract class PigMixin_API extends AnimalMixin_API implements Pig { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/PigVariantMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/pig/PigVariantMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/PigVariantMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/pig/PigVariantMixin_API.java index cd55ac4eed2..b374b70822d 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/PigVariantMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/pig/PigVariantMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.pig; -import net.minecraft.world.entity.animal.PigVariant; +import net.minecraft.world.entity.animal.pig.PigVariant; import org.spongepowered.api.data.type.PigType; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/PolarBearMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/polarbear/PolarBearMixin_API.java similarity index 91% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/PolarBearMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/polarbear/PolarBearMixin_API.java index ffc308a242b..60bdbd05d19 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/PolarBearMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/polarbear/PolarBearMixin_API.java @@ -22,16 +22,17 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.polarbear; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.living.animal.PolarBear; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.animal.AnimalMixin_API; import java.util.Set; -@Mixin(net.minecraft.world.entity.animal.PolarBear.class) +@Mixin(net.minecraft.world.entity.animal.polarbear.PolarBear.class) public abstract class PolarBearMixin_API extends AnimalMixin_API implements PolarBear { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/RabbitMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/rabbit/RabbitMixin_API.java similarity index 91% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/RabbitMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/rabbit/RabbitMixin_API.java index a4a60b1fef3..23262a67025 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/RabbitMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/rabbit/RabbitMixin_API.java @@ -22,16 +22,17 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.rabbit; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.living.animal.Rabbit; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.animal.AnimalMixin_API; import java.util.Set; -@Mixin(net.minecraft.world.entity.animal.Rabbit.class) +@Mixin(net.minecraft.world.entity.animal.rabbit.Rabbit.class) public abstract class RabbitMixin_API extends AnimalMixin_API implements Rabbit { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/Rabbit_VariantMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/rabbit/Rabbit_VariantMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/Rabbit_VariantMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/rabbit/Rabbit_VariantMixin_API.java index 424366ea007..94a1fb9e31e 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/Rabbit_VariantMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/rabbit/Rabbit_VariantMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.rabbit; import org.spongepowered.api.data.type.RabbitType; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.animal.Rabbit.Variant.class) +@Mixin(net.minecraft.world.entity.animal.rabbit.Rabbit.Variant.class) public abstract class Rabbit_VariantMixin_API implements RabbitType { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/GlowSquidMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/squid/GlowSquidMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/GlowSquidMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/squid/GlowSquidMixin_API.java index de783fb269b..08daa57f927 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/GlowSquidMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/squid/GlowSquidMixin_API.java @@ -22,11 +22,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.squid; import org.spongepowered.api.entity.living.aquatic.GlowSquid; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.GlowSquid.class) +@Mixin(net.minecraft.world.entity.animal.squid.GlowSquid.class) public abstract class GlowSquidMixin_API implements GlowSquid { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/SquidMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/squid/SquidMixin_API.java similarity index 89% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/SquidMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/squid/SquidMixin_API.java index 91950d3f8bd..7f20da49d1e 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/SquidMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/squid/SquidMixin_API.java @@ -22,12 +22,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.squid; import org.spongepowered.api.entity.living.aquatic.Squid; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.animal.AgeableWaterCreatureMixin_API; -@Mixin(net.minecraft.world.entity.animal.Squid.class) +@Mixin(net.minecraft.world.entity.animal.squid.Squid.class) public abstract class SquidMixin_API extends AgeableWaterCreatureMixin_API implements Squid { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/TurtleMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/turtle/TurtleMixin_API.java similarity index 92% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/TurtleMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/turtle/TurtleMixin_API.java index af8c0ac2d78..b1790c8a505 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/TurtleMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/animal/turtle/TurtleMixin_API.java @@ -22,16 +22,17 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.animal; +package org.spongepowered.common.mixin.api.minecraft.world.entity.animal.turtle; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.living.animal.Turtle; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.animal.AnimalMixin_API; import java.util.Set; -@Mixin(net.minecraft.world.entity.animal.Turtle.class) +@Mixin(net.minecraft.world.entity.animal.turtle.Turtle.class) public abstract class TurtleMixin_API extends AnimalMixin_API implements Turtle { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/boss/enderdragon/EnderDragonMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/boss/enderdragon/EnderDragonMixin_API.java index 1d5ea3ce658..593c5647d80 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/boss/enderdragon/EnderDragonMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/boss/enderdragon/EnderDragonMixin_API.java @@ -43,7 +43,7 @@ public abstract class EnderDragonMixin_API extends MobMixin_API implements EnderDragon { // @formatter:off - @Shadow @Final private net.minecraft.world.entity.boss.EnderDragonPart[] subEntities; + @Shadow @Final private net.minecraft.world.entity.boss.enderdragon.EnderDragonPart[] subEntities; @Shadow @Final private EnderDragonPhaseManager phaseManager; // @formatter:on @@ -51,7 +51,7 @@ public abstract class EnderDragonMixin_API extends MobMixin_API implements Ender public Set parts() { Builder builder = ImmutableSet.builder(); - for (net.minecraft.world.entity.boss.EnderDragonPart part : this.subEntities) { + for (net.minecraft.world.entity.boss.enderdragon.EnderDragonPart part : this.subEntities) { builder.add((EnderDragonPart) part); } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/boss/EnderDragonPartMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/boss/enderdragon/EnderDragonPartMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/boss/EnderDragonPartMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/boss/enderdragon/EnderDragonPartMixin_API.java index 2018ad2420b..75068e50e3c 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/boss/EnderDragonPartMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/boss/enderdragon/EnderDragonPartMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.boss; +package org.spongepowered.common.mixin.api.minecraft.world.entity.boss.enderdragon; import org.spongepowered.api.entity.living.monster.boss.dragon.EnderDragon; import org.spongepowered.api.entity.living.monster.boss.dragon.EnderDragonPart; @@ -31,7 +31,7 @@ import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.common.mixin.api.minecraft.world.entity.EntityMixin_API; -@Mixin(net.minecraft.world.entity.boss.EnderDragonPart.class) +@Mixin(net.minecraft.world.entity.boss.enderdragon.EnderDragonPart.class) public abstract class EnderDragonPartMixin_API extends EntityMixin_API implements EnderDragonPart { // @formatter:off diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/decoration/PaintingMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/decoration/painting/PaintingMixin_API.java similarity index 90% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/decoration/PaintingMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/decoration/painting/PaintingMixin_API.java index 6182867cd8c..d3da6aea61a 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/decoration/PaintingMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/decoration/painting/PaintingMixin_API.java @@ -22,16 +22,17 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.decoration; +package org.spongepowered.common.mixin.api.minecraft.world.entity.decoration.painting; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.hanging.Painting; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.decoration.HangingEntityMixin_API; import java.util.Set; -@Mixin(net.minecraft.world.entity.decoration.Painting.class) +@Mixin(net.minecraft.world.entity.decoration.painting.Painting.class) public abstract class PaintingMixin_API extends HangingEntityMixin_API implements Painting { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/decoration/PaintingVariantMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/decoration/painting/PaintingVariantMixin_API.java similarity index 87% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/decoration/PaintingVariantMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/decoration/painting/PaintingVariantMixin_API.java index fcad5395cb3..21d95cde7a4 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/decoration/PaintingVariantMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/decoration/painting/PaintingVariantMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.decoration; +package org.spongepowered.common.mixin.api.minecraft.world.entity.decoration.painting; import org.spongepowered.api.data.persistence.DataContainer; import org.spongepowered.api.data.type.ArtType; @@ -32,11 +32,11 @@ import java.util.Optional; -@Mixin(net.minecraft.world.entity.decoration.PaintingVariant.class) +@Mixin(net.minecraft.world.entity.decoration.painting.PaintingVariant.class) public abstract class PaintingVariantMixin_API implements ArtType { @Override public Optional toDataPack(final RegistryHolder registryHolder) { - return DataPackUtil.toDataContainer(registryHolder, net.minecraft.world.entity.decoration.PaintingVariant.DIRECT_CODEC, (net.minecraft.world.entity.decoration.PaintingVariant) (Object) this); + return DataPackUtil.toDataContainer(registryHolder, net.minecraft.world.entity.decoration.painting.PaintingVariant.DIRECT_CODEC, (net.minecraft.world.entity.decoration.painting.PaintingVariant) (Object) this); } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/ShulkerMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/ShulkerMixin_API.java index 3a0ed7b26d7..28a25f70e15 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/ShulkerMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/ShulkerMixin_API.java @@ -32,7 +32,7 @@ import org.spongepowered.api.entity.projectile.Projectile; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.common.entity.projectile.ProjectileUtil; -import org.spongepowered.common.mixin.api.minecraft.world.entity.animal.AbstractGolemMixin_API; +import org.spongepowered.common.mixin.api.minecraft.world.entity.animal.golem.AbstractGolemMixin_API; import java.util.Objects; import java.util.Optional; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/BreezeMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/breeze/BreezeMixin_API.java similarity index 93% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/BreezeMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/breeze/BreezeMixin_API.java index dc84063fb15..0edbfbb5754 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/BreezeMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/breeze/BreezeMixin_API.java @@ -22,10 +22,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.breeze; import org.spongepowered.api.entity.living.monster.breeze.Breeze; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.monster.MonsterMixin_API; @Mixin(net.minecraft.world.entity.monster.breeze.Breeze.class) public abstract class BreezeMixin_API extends MonsterMixin_API implements Breeze { diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/HoglinMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/hoglin/HoglinMixin_API.java similarity index 98% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/HoglinMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/hoglin/HoglinMixin_API.java index 566a80e54ca..d1af4d6b6de 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/HoglinMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/hoglin/HoglinMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.hoglin; import org.spongepowered.api.entity.living.animal.Hoglin; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/AbstractIllagerMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/AbstractIllagerMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/AbstractIllagerMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/AbstractIllagerMixin_API.java index 8843ee358c6..c9ce5d9216f 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/AbstractIllagerMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/AbstractIllagerMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.illager; -import net.minecraft.world.entity.monster.AbstractIllager; +import net.minecraft.world.entity.monster.illager.AbstractIllager; import org.spongepowered.api.entity.living.monster.raider.illager.Illager; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.common.mixin.api.minecraft.world.entity.raid.RaiderMixin_API; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/EvokerMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/EvokerMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/EvokerMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/EvokerMixin_API.java index bfa2e906e67..08f90069f81 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/EvokerMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/EvokerMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.illager; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; @@ -31,7 +31,7 @@ import java.util.Set; -@Mixin(net.minecraft.world.entity.monster.Evoker.class) +@Mixin(net.minecraft.world.entity.monster.illager.Evoker.class) public abstract class EvokerMixin_API extends SpellcasterIllagerMixin_API implements Evoker { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/IllusionerMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/IllusionerMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/IllusionerMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/IllusionerMixin_API.java index d3543f85819..b24b6f7f2a2 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/IllusionerMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/IllusionerMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.illager; import org.spongepowered.api.entity.living.monster.raider.illager.spellcaster.Illusioner; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.monster.Illusioner.class) +@Mixin(net.minecraft.world.entity.monster.illager.Illusioner.class) public abstract class IllusionerMixin_API extends SpellcasterIllagerMixin_API implements Illusioner { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/PillagerMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/PillagerMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/PillagerMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/PillagerMixin_API.java index 64e7ef99122..0fc56689a09 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/PillagerMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/PillagerMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.illager; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; @@ -31,7 +31,7 @@ import java.util.Set; -@Mixin(net.minecraft.world.entity.monster.Pillager.class) +@Mixin(net.minecraft.world.entity.monster.illager.Pillager.class) public abstract class PillagerMixin_API extends AbstractIllagerMixin_API implements Pillager { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/SpellcasterIllagerMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/SpellcasterIllagerMixin_API.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/SpellcasterIllagerMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/SpellcasterIllagerMixin_API.java index 76a27df8baf..e421c14e7be 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/SpellcasterIllagerMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/SpellcasterIllagerMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.illager; -import net.minecraft.world.entity.monster.SpellcasterIllager; +import net.minecraft.world.entity.monster.illager.SpellcasterIllager; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.living.monster.raider.illager.spellcaster.Spellcaster; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/SpellcasterIllager_IllagerSpellMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/SpellcasterIllager_IllagerSpellMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/SpellcasterIllager_IllagerSpellMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/SpellcasterIllager_IllagerSpellMixin_API.java index e7b900dbfc9..74477199c0e 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/SpellcasterIllager_IllagerSpellMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/SpellcasterIllager_IllagerSpellMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.illager; -import net.minecraft.world.entity.monster.SpellcasterIllager; +import net.minecraft.world.entity.monster.illager.SpellcasterIllager; import org.spongepowered.api.data.type.SpellType; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/VindicatorMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/VindicatorMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/VindicatorMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/VindicatorMixin_API.java index 2053431df08..f5f5cdff131 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/VindicatorMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/illager/VindicatorMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.illager; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; @@ -31,7 +31,7 @@ import java.util.Set; -@Mixin(net.minecraft.world.entity.monster.Vindicator.class) +@Mixin(net.minecraft.world.entity.monster.illager.Vindicator.class) public abstract class VindicatorMixin_API extends AbstractIllagerMixin_API implements Vindicator { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/AbstractPiglinMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/piglin/AbstractPiglinMixin_API.java similarity index 98% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/AbstractPiglinMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/piglin/AbstractPiglinMixin_API.java index a06f5e83730..d4d7686e79b 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/AbstractPiglinMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/piglin/AbstractPiglinMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.piglin; import net.minecraft.world.entity.monster.piglin.AbstractPiglin; import org.spongepowered.api.entity.living.monster.piglin.PiglinLike; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/PiglinBruteMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/piglin/PiglinBruteMixin_API.java similarity index 98% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/PiglinBruteMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/piglin/PiglinBruteMixin_API.java index ff57494d1e7..90869eb2712 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/PiglinBruteMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/piglin/PiglinBruteMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.piglin; import org.spongepowered.api.entity.living.monster.piglin.PiglinBrute; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/PiglinMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/piglin/PiglinMixin_API.java similarity index 98% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/PiglinMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/piglin/PiglinMixin_API.java index 07d859aa8cf..6447ac82a16 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/PiglinMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/piglin/PiglinMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.piglin; import org.spongepowered.api.entity.living.monster.piglin.Piglin; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/AbstractSkeletonMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/skeleton/AbstractSkeletonMixin_API.java similarity index 89% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/AbstractSkeletonMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/skeleton/AbstractSkeletonMixin_API.java index da02f7d8a40..dd8833642cd 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/AbstractSkeletonMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/skeleton/AbstractSkeletonMixin_API.java @@ -22,11 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.skeleton; -import net.minecraft.world.entity.monster.AbstractSkeleton; +import net.minecraft.world.entity.monster.skeleton.AbstractSkeleton; import org.spongepowered.api.entity.living.monster.skeleton.SkeletonLike; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.monster.MonsterMixin_API; @Mixin(AbstractSkeleton.class) public abstract class AbstractSkeletonMixin_API extends MonsterMixin_API implements SkeletonLike { diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/BoggedMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/skeleton/BoggedMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/BoggedMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/skeleton/BoggedMixin_API.java index 6dc064db04e..2cb15655d58 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/BoggedMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/skeleton/BoggedMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.skeleton; import org.spongepowered.api.entity.living.monster.skeleton.Bogged; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.monster.Bogged.class) +@Mixin(net.minecraft.world.entity.monster.skeleton.Bogged.class) public abstract class BoggedMixin_API extends AbstractSkeletonMixin_API implements Bogged { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/skeleton/ParchedMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/skeleton/ParchedMixin_API.java new file mode 100644 index 00000000000..f201b9abd60 --- /dev/null +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/skeleton/ParchedMixin_API.java @@ -0,0 +1,33 @@ +/* + * This file is part of Sponge, licensed under the MIT License (MIT). + * + * Copyright (c) SpongePowered + * Copyright (c) contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.skeleton; + +import org.spongepowered.api.entity.living.monster.skeleton.Parched; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(net.minecraft.world.entity.monster.skeleton.Parched.class) +public abstract class ParchedMixin_API extends AbstractSkeletonMixin_API implements Parched { + +} diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/SkeletonMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/skeleton/SkeletonMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/SkeletonMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/skeleton/SkeletonMixin_API.java index 5256da67b7e..10a4b5cff05 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/SkeletonMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/skeleton/SkeletonMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.skeleton; import org.spongepowered.api.entity.living.monster.skeleton.Skeleton; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.monster.Skeleton.class) +@Mixin(net.minecraft.world.entity.monster.skeleton.Skeleton.class) public abstract class SkeletonMixin_API extends AbstractSkeletonMixin_API implements Skeleton { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/StrayMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/skeleton/StrayMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/StrayMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/skeleton/StrayMixin_API.java index 598393f3d6e..a9753f77498 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/StrayMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/skeleton/StrayMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.skeleton; import org.spongepowered.api.entity.living.monster.skeleton.Stray; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.monster.Stray.class) +@Mixin(net.minecraft.world.entity.monster.skeleton.Stray.class) public abstract class StrayMixin_API extends AbstractSkeletonMixin_API implements Stray { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/WitherSkeletonMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/skeleton/WitherSkeletonMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/WitherSkeletonMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/skeleton/WitherSkeletonMixin_API.java index 0b2370c82f4..d094112c222 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/WitherSkeletonMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/skeleton/WitherSkeletonMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.skeleton; import org.spongepowered.api.entity.living.monster.skeleton.WitherSkeleton; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.monster.WitherSkeleton.class) +@Mixin(net.minecraft.world.entity.monster.skeleton.WitherSkeleton.class) public abstract class WitherSkeletonMixin_API extends AbstractSkeletonMixin_API implements WitherSkeleton { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/CaveSpiderMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/spider/CaveSpiderMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/CaveSpiderMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/spider/CaveSpiderMixin_API.java index d4642c10802..f6d75889526 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/CaveSpiderMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/spider/CaveSpiderMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.spider; import org.spongepowered.api.entity.living.monster.spider.CaveSpider; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.monster.CaveSpider.class) +@Mixin(net.minecraft.world.entity.monster.spider.CaveSpider.class) public abstract class CaveSpiderMixin_API extends SpiderMixin_API implements CaveSpider { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/SpiderMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/spider/SpiderMixin_API.java similarity index 91% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/SpiderMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/spider/SpiderMixin_API.java index dee3c008865..c2c2009a9d1 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/SpiderMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/spider/SpiderMixin_API.java @@ -22,16 +22,17 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.spider; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.living.monster.spider.Spider; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.monster.MonsterMixin_API; import java.util.Set; -@Mixin(net.minecraft.world.entity.monster.Spider.class) +@Mixin(net.minecraft.world.entity.monster.spider.Spider.class) public abstract class SpiderMixin_API extends MonsterMixin_API implements Spider { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/DrownedMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/zombie/DrownedMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/DrownedMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/zombie/DrownedMixin_API.java index 1df42a64f8a..b016c59527a 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/DrownedMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/zombie/DrownedMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.zombie; import org.spongepowered.api.entity.living.monster.zombie.Drowned; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.monster.Drowned.class) +@Mixin(net.minecraft.world.entity.monster.zombie.Drowned.class) public abstract class DrownedMixin_API extends ZombieMixin_API implements Drowned { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/HuskMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/zombie/HuskMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/HuskMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/zombie/HuskMixin_API.java index 977efde3f47..fe5303be2c4 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/HuskMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/zombie/HuskMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.zombie; import org.spongepowered.api.entity.living.monster.zombie.Husk; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.monster.Husk.class) +@Mixin(net.minecraft.world.entity.monster.zombie.Husk.class) public abstract class HuskMixin_API extends ZombieMixin_API implements Husk { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/ZombieMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/zombie/ZombieMixin_API.java similarity index 91% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/ZombieMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/zombie/ZombieMixin_API.java index f2bda1f4acb..bf5b20f310b 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/ZombieMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/zombie/ZombieMixin_API.java @@ -22,16 +22,17 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.zombie; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.living.monster.zombie.Zombie; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.monster.MonsterMixin_API; import java.util.Set; -@Mixin(net.minecraft.world.entity.monster.Zombie.class) +@Mixin(net.minecraft.world.entity.monster.zombie.Zombie.class) public abstract class ZombieMixin_API extends MonsterMixin_API implements Zombie { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/ZombieVillagerMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/zombie/ZombieVillagerMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/ZombieVillagerMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/zombie/ZombieVillagerMixin_API.java index c649140cf59..41061c9d42b 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/ZombieVillagerMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/zombie/ZombieVillagerMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.zombie; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; @@ -31,7 +31,7 @@ import java.util.Set; -@Mixin(net.minecraft.world.entity.monster.ZombieVillager.class) +@Mixin(net.minecraft.world.entity.monster.zombie.ZombieVillager.class) public abstract class ZombieVillagerMixin_API extends ZombieMixin_API implements ZombieVillager { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/ZombifiedPiglinMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/zombie/ZombifiedPiglinMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/ZombifiedPiglinMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/zombie/ZombifiedPiglinMixin_API.java index a86f41dfb40..09d78f74d03 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/ZombifiedPiglinMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/monster/zombie/ZombifiedPiglinMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.monster; +package org.spongepowered.common.mixin.api.minecraft.world.entity.monster.zombie; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; @@ -31,7 +31,7 @@ import java.util.Set; -@Mixin(net.minecraft.world.entity.monster.ZombifiedPiglin.class) +@Mixin(net.minecraft.world.entity.monster.zombie.ZombifiedPiglin.class) public abstract class ZombifiedPiglinMixin_API extends ZombieMixin_API implements ZombifiedPiglin { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/AbstractVillagerMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/villager/AbstractVillagerMixin_API.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/AbstractVillagerMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/villager/AbstractVillagerMixin_API.java index e60b8d0166d..d0ea92835ad 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/AbstractVillagerMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/villager/AbstractVillagerMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.npc; +package org.spongepowered.common.mixin.api.minecraft.world.entity.npc.villager; -import net.minecraft.world.entity.npc.AbstractVillager; +import net.minecraft.world.entity.npc.villager.AbstractVillager; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.living.trader.VillagerLike; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/VillagerMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/villager/VillagerMixin_API.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/VillagerMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/villager/VillagerMixin_API.java index 1b3603129df..c2fdcddd70c 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/VillagerMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/villager/VillagerMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.npc; +package org.spongepowered.common.mixin.api.minecraft.world.entity.npc.villager; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; @@ -31,7 +31,7 @@ import java.util.Set; -@Mixin(net.minecraft.world.entity.npc.Villager.class) +@Mixin(net.minecraft.world.entity.npc.villager.Villager.class) public abstract class VillagerMixin_API extends AbstractVillagerMixin_API implements Villager { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/VillagerProfessionMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/villager/VillagerProfessionMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/VillagerProfessionMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/villager/VillagerProfessionMixin_API.java index 2f6d3d6700e..bcf1e8769d5 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/VillagerProfessionMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/villager/VillagerProfessionMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.npc; +package org.spongepowered.common.mixin.api.minecraft.world.entity.npc.villager; -import net.minecraft.world.entity.npc.VillagerProfession; +import net.minecraft.world.entity.npc.villager.VillagerProfession; import org.spongepowered.api.data.type.ProfessionType; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/VillagerTrades_ItemListingMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/villager/VillagerTrades_ItemListingMixin_API.java similarity index 81% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/VillagerTrades_ItemListingMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/villager/VillagerTrades_ItemListingMixin_API.java index 9bbed6e93d7..5776537988f 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/VillagerTrades_ItemListingMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/villager/VillagerTrades_ItemListingMixin_API.java @@ -22,11 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.npc; +package org.spongepowered.common.mixin.api.minecraft.world.entity.npc.villager; +import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.npc.VillagerTrades; +import net.minecraft.world.entity.npc.villager.VillagerTrades; import net.minecraft.world.item.trading.MerchantOffer; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.item.merchant.TradeOffer; @@ -39,12 +40,15 @@ public interface VillagerTrades_ItemListingMixin_API extends TradeOfferGenerator { // @formatter:off - @Shadow @Nullable MerchantOffer shadow$getOffer(Entity entity, RandomSource random); + @Shadow @Nullable MerchantOffer shadow$getOffer(ServerLevel level, Entity entity, RandomSource random); // @formatter:on @Override default TradeOffer apply(final org.spongepowered.api.entity.Entity merchant, final RandomProvider.Source random) { - return (TradeOffer) this.shadow$getOffer((Entity) merchant, (RandomSource) random); + if (merchant.world() instanceof ServerLevel sl) { + return (TradeOffer) this.shadow$getOffer(sl, (Entity) merchant, (RandomSource) random); + } + throw new IllegalStateException("The merchant is not in a server world!"); } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/VillagerTypeMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/villager/VillagerTypeMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/VillagerTypeMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/villager/VillagerTypeMixin_API.java index bbe9082a9a4..0c87bd0aa47 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/VillagerTypeMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/villager/VillagerTypeMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.npc; +package org.spongepowered.common.mixin.api.minecraft.world.entity.npc.villager; -import net.minecraft.world.entity.npc.VillagerType; +import net.minecraft.world.entity.npc.villager.VillagerType; import org.spongepowered.asm.mixin.Mixin; @Mixin(VillagerType.class) diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/WanderingTraderMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/wanderingtrader/WanderingTraderMixin_API.java similarity index 90% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/WanderingTraderMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/wanderingtrader/WanderingTraderMixin_API.java index f9e31164eae..11a4667f181 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/WanderingTraderMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/npc/wanderingtrader/WanderingTraderMixin_API.java @@ -22,16 +22,17 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.npc; +package org.spongepowered.common.mixin.api.minecraft.world.entity.npc.wanderingtrader; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.living.trader.WanderingTrader; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.npc.villager.AbstractVillagerMixin_API; import java.util.Set; -@Mixin(net.minecraft.world.entity.npc.WanderingTrader.class) +@Mixin(net.minecraft.world.entity.npc.wanderingtrader.WanderingTrader.class) public abstract class WanderingTraderMixin_API extends AbstractVillagerMixin_API implements WanderingTrader { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/player/ChatVisiblityMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/player/ChatVisiblityMixin_API.java index 22d8a0c06de..3e54cb6d300 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/player/ChatVisiblityMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/player/ChatVisiblityMixin_API.java @@ -29,17 +29,18 @@ import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.common.adventure.SpongeAdventure; @Mixin(ChatVisiblity.class) public abstract class ChatVisiblityMixin_API implements org.spongepowered.api.entity.living.player.chat.ChatVisibility { // @formatter:off - @Shadow @Final private String key; + @Shadow @Final private net.minecraft.network.chat.Component caption; // @formatter:on @Override public Component asComponent() { - return Component.translatable(this.key); + return SpongeAdventure.asAdventure(this.caption); } @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/AbstractArrowMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/arrow/AbstractArrowMixin_API.java similarity index 92% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/AbstractArrowMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/arrow/AbstractArrowMixin_API.java index 14702b4832c..677e9cd3641 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/AbstractArrowMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/arrow/AbstractArrowMixin_API.java @@ -22,13 +22,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.arrow; -import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.projectile.arrow.AbstractArrow; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.projectile.arrow.ArrowLike; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.ProjectileMixin_API; import java.util.Set; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/AbstractArrow_PickupMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/arrow/AbstractArrow_PickupMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/AbstractArrow_PickupMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/arrow/AbstractArrow_PickupMixin_API.java index 2b6317f72bc..af2ee6cfd1f 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/AbstractArrow_PickupMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/arrow/AbstractArrow_PickupMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.arrow; -import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.projectile.arrow.AbstractArrow; import org.spongepowered.api.data.type.PickupRule; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ArrowMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/arrow/ArrowMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ArrowMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/arrow/ArrowMixin_API.java index af7f6e134e5..aacaed6b0ec 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ArrowMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/arrow/ArrowMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.arrow; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; @@ -31,7 +31,7 @@ import java.util.Set; -@Mixin(net.minecraft.world.entity.projectile.Arrow.class) +@Mixin(net.minecraft.world.entity.projectile.arrow.Arrow.class) public abstract class ArrowMixin_API extends AbstractArrowMixin_API implements Arrow { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/SpectralArrowMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/arrow/SpectralArrowMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/SpectralArrowMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/arrow/SpectralArrowMixin_API.java index f7b1de3429b..54817227838 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/SpectralArrowMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/arrow/SpectralArrowMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.arrow; import org.spongepowered.api.entity.projectile.arrow.SpectralArrow; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.projectile.SpectralArrow.class) +@Mixin(net.minecraft.world.entity.projectile.arrow.SpectralArrow.class) public abstract class SpectralArrowMixin_API extends AbstractArrowMixin_API implements SpectralArrow { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ThrownTridentMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/arrow/ThrownTridentMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ThrownTridentMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/arrow/ThrownTridentMixin_API.java index 4dcadc05ee9..41509d0537f 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ThrownTridentMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/arrow/ThrownTridentMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.arrow; -import net.minecraft.world.entity.projectile.ThrownTrident; +import net.minecraft.world.entity.projectile.arrow.ThrownTrident; import org.spongepowered.api.entity.projectile.arrow.Trident; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/AbstractHurtingProjectileMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/AbstractHurtingProjectileMixin_API.java similarity index 89% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/AbstractHurtingProjectileMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/AbstractHurtingProjectileMixin_API.java index e709112d51e..4b96313a9e8 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/AbstractHurtingProjectileMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/AbstractHurtingProjectileMixin_API.java @@ -22,13 +22,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.hurtingprojectile; -import net.minecraft.world.entity.projectile.AbstractHurtingProjectile; +import net.minecraft.world.entity.projectile.hurtingprojectile.AbstractHurtingProjectile; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.projectile.AcceleratingProjectile; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.ProjectileMixin_API; import java.util.Set; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/DragonFireballMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/DragonFireballMixin_API.java similarity index 93% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/DragonFireballMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/DragonFireballMixin_API.java index 49758fd8b01..a38feff5816 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/DragonFireballMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/DragonFireballMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.hurtingprojectile; import org.spongepowered.api.entity.projectile.explosive.fireball.DragonFireball; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.projectile.DragonFireball.class) +@Mixin(net.minecraft.world.entity.projectile.hurtingprojectile.DragonFireball.class) public abstract class DragonFireballMixin_API extends AbstractHurtingProjectileMixin_API implements DragonFireball { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/FireballMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/FireballMixin_API.java similarity index 93% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/FireballMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/FireballMixin_API.java index 3ee190cad57..1c958da47f4 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/FireballMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/FireballMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.hurtingprojectile; -import net.minecraft.world.entity.projectile.Fireball; +import net.minecraft.world.entity.projectile.hurtingprojectile.Fireball; import org.spongepowered.api.entity.projectile.IgnitingProjectile; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/LargeFireballMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/LargeFireballMixin_API.java similarity index 92% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/LargeFireballMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/LargeFireballMixin_API.java index 9fdae239297..f8a822382b0 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/LargeFireballMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/LargeFireballMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.hurtingprojectile; import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.entity.projectile.LargeFireball; -import net.minecraft.world.level.GameRules; +import net.minecraft.world.entity.projectile.hurtingprojectile.LargeFireball; import net.minecraft.world.level.Level; +import net.minecraft.world.level.gamerules.GameRules; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.projectile.explosive.fireball.ExplosiveFireball; @@ -44,7 +44,7 @@ public abstract class LargeFireballMixin_API extends FireballMixin_API implement @Override public void detonate() { - if (this.shadow$level() instanceof ServerLevel sl && sl.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { + if (this.shadow$level() instanceof ServerLevel sl && sl.getGameRules().get(GameRules.MOB_GRIEFING)) { ((LargeFireballBridge) this).bridge$wrappedExplode(this.shadow$getX(), this.shadow$getY(), this.shadow$getZ(), this.explosionPower, true, Level.ExplosionInteraction.MOB); } this.shadow$discard(); diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/SmallFireballMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/SmallFireballMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/SmallFireballMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/SmallFireballMixin_API.java index c7b55172d1d..8bffdf58b1b 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/SmallFireballMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/SmallFireballMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.hurtingprojectile; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; @@ -31,7 +31,7 @@ import java.util.Set; -@Mixin(net.minecraft.world.entity.projectile.SmallFireball.class) +@Mixin(net.minecraft.world.entity.projectile.hurtingprojectile.SmallFireball.class) public abstract class SmallFireballMixin_API extends FireballMixin_API implements SmallFireball { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/WitherSkullMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/WitherSkullMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/WitherSkullMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/WitherSkullMixin_API.java index 72742b09d19..ed258a11ad1 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/WitherSkullMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/WitherSkullMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.hurtingprojectile; import net.minecraft.world.level.Level; import org.spongepowered.api.data.Keys; @@ -33,7 +33,7 @@ import java.util.Set; -@Mixin(net.minecraft.world.entity.projectile.WitherSkull.class) +@Mixin(net.minecraft.world.entity.projectile.hurtingprojectile.WitherSkull.class) public abstract class WitherSkullMixin_API extends AbstractHurtingProjectileMixin_API implements WitherSkull { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/windcharge/AbstractWindChargeMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/windcharge/AbstractWindChargeMixin_API.java similarity index 93% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/windcharge/AbstractWindChargeMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/windcharge/AbstractWindChargeMixin_API.java index 863d312b601..72f44feb2e5 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/windcharge/AbstractWindChargeMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/windcharge/AbstractWindChargeMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.windcharge; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.hurtingprojectile.windcharge; -import net.minecraft.world.entity.projectile.windcharge.AbstractWindCharge; +import net.minecraft.world.entity.projectile.hurtingprojectile.windcharge.AbstractWindCharge; import net.minecraft.world.phys.Vec3; import org.spongepowered.api.entity.explosive.Explosive; import org.spongepowered.api.entity.projectile.windcharge.WindChargeLike; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/windcharge/BreezeWindChargeMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/windcharge/BreezeWindChargeMixin_API.java similarity index 91% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/windcharge/BreezeWindChargeMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/windcharge/BreezeWindChargeMixin_API.java index f5313aff01b..5f42a87470d 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/windcharge/BreezeWindChargeMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/windcharge/BreezeWindChargeMixin_API.java @@ -22,11 +22,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.windcharge; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.hurtingprojectile.windcharge; import org.spongepowered.api.entity.projectile.windcharge.BreezeWindCharge; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.projectile.windcharge.BreezeWindCharge.class) +@Mixin(net.minecraft.world.entity.projectile.hurtingprojectile.windcharge.BreezeWindCharge.class) public abstract class BreezeWindChargeMixin_API extends AbstractWindChargeMixin_API implements BreezeWindCharge { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/windcharge/WindChargeMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/windcharge/WindChargeMixin_API.java similarity index 91% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/windcharge/WindChargeMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/windcharge/WindChargeMixin_API.java index 5988ba9f4d0..2f85850c616 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/windcharge/WindChargeMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/hurtingprojectile/windcharge/WindChargeMixin_API.java @@ -22,11 +22,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.windcharge; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.hurtingprojectile.windcharge; import org.spongepowered.api.entity.projectile.windcharge.WindCharge; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.projectile.windcharge.WindCharge.class) +@Mixin(net.minecraft.world.entity.projectile.hurtingprojectile.windcharge.WindCharge.class) public abstract class WindChargeMixin_API extends AbstractWindChargeMixin_API implements WindCharge { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/SnowballMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/throwableitemprojectile/SnowballMixin_API.java similarity index 92% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/SnowballMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/throwableitemprojectile/SnowballMixin_API.java index 48f40eef4aa..ff855ac10e6 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/SnowballMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/throwableitemprojectile/SnowballMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.throwableitemprojectile; import org.spongepowered.api.entity.projectile.Snowball; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.projectile.Snowball.class) +@Mixin(net.minecraft.world.entity.projectile.throwableitemprojectile.Snowball.class) public abstract class SnowballMixin_API extends ThrowableItemProjectileMixin_API implements Snowball { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ThrowableItemProjectileMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/throwableitemprojectile/ThrowableItemProjectileMixin_API.java similarity index 88% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ThrowableItemProjectileMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/throwableitemprojectile/ThrowableItemProjectileMixin_API.java index 4c837849ac9..f7715097f66 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ThrowableItemProjectileMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/throwableitemprojectile/ThrowableItemProjectileMixin_API.java @@ -22,16 +22,17 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.throwableitemprojectile; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.projectile.ThrowableItemProjectile; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.ThrowableProjectileMixin_API; import java.util.Set; -@Mixin(net.minecraft.world.entity.projectile.ThrowableItemProjectile.class) +@Mixin(net.minecraft.world.entity.projectile.throwableitemprojectile.ThrowableItemProjectile.class) public abstract class ThrowableItemProjectileMixin_API extends ThrowableProjectileMixin_API implements ThrowableItemProjectile { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ThrownEggMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/throwableitemprojectile/ThrownEggMixin_API.java similarity index 92% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ThrownEggMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/throwableitemprojectile/ThrownEggMixin_API.java index c0d3cf6129f..dc134e7f5a2 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ThrownEggMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/throwableitemprojectile/ThrownEggMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.throwableitemprojectile; -import net.minecraft.world.entity.projectile.ThrownEgg; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrownEgg; import org.spongepowered.api.entity.projectile.Egg; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ThrownEnderpearlMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/throwableitemprojectile/ThrownEnderpearlMixin_API.java similarity index 92% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ThrownEnderpearlMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/throwableitemprojectile/ThrownEnderpearlMixin_API.java index 534361f9473..d500aec68d8 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ThrownEnderpearlMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/throwableitemprojectile/ThrownEnderpearlMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.throwableitemprojectile; -import net.minecraft.world.entity.projectile.ThrownEnderpearl; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrownEnderpearl; import org.spongepowered.api.entity.projectile.EnderPearl; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ThrownExperienceBottleMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/throwableitemprojectile/ThrownExperienceBottleMixin_API.java similarity index 92% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ThrownExperienceBottleMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/throwableitemprojectile/ThrownExperienceBottleMixin_API.java index 1ec7c1b777e..c44afc19677 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ThrownExperienceBottleMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/throwableitemprojectile/ThrownExperienceBottleMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.throwableitemprojectile; -import net.minecraft.world.entity.projectile.ThrownExperienceBottle; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrownExperienceBottle; import org.spongepowered.api.entity.projectile.ExperienceBottle; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ThrownPotionMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/throwableitemprojectile/ThrownPotionMixin_API.java similarity index 93% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ThrownPotionMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/throwableitemprojectile/ThrownPotionMixin_API.java index 96450dea666..fb503acbad3 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/ThrownPotionMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/projectile/throwableitemprojectile/ThrownPotionMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile; +package org.spongepowered.common.mixin.api.minecraft.world.entity.projectile.throwableitemprojectile; -import net.minecraft.world.entity.projectile.AbstractThrownPotion; +import net.minecraft.world.entity.projectile.throwableitemprojectile.AbstractThrownPotion; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.projectile.Potion; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/AbstractBoatMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/boat/AbstractBoatMixin_API.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/AbstractBoatMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/boat/AbstractBoatMixin_API.java index a3c3c926942..aef5b5d68ff 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/AbstractBoatMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/boat/AbstractBoatMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle; +package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle.boat; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; @@ -34,7 +34,7 @@ import java.util.Set; -@Mixin(net.minecraft.world.entity.vehicle.AbstractBoat.class) +@Mixin(net.minecraft.world.entity.vehicle.boat.AbstractBoat.class) @Implements(@Interface(iface = Boat.class, prefix = "apiBoat$")) public abstract class AbstractBoatMixin_API extends EntityMixin_API implements Boat { diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/AbstractChestBoatMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/boat/AbstractChestBoatMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/AbstractChestBoatMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/boat/AbstractChestBoatMixin_API.java index ee842169990..d8c51298e93 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/AbstractChestBoatMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/boat/AbstractChestBoatMixin_API.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle; +package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle.boat; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.vehicle.ChestBoat; @@ -30,7 +30,7 @@ import java.util.Set; -@Mixin(net.minecraft.world.entity.vehicle.AbstractChestBoat.class) +@Mixin(net.minecraft.world.entity.vehicle.boat.AbstractChestBoat.class) public abstract class AbstractChestBoatMixin_API extends AbstractBoatMixin_API implements ChestBoat { @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/AbstractMinecartContainerMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/AbstractMinecartContainerMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/AbstractMinecartContainerMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/AbstractMinecartContainerMixin_API.java index be06c2e6cb9..b112b1914ad 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/AbstractMinecartContainerMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/AbstractMinecartContainerMixin_API.java @@ -22,10 +22,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle; +package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle.minecart; -import net.minecraft.world.entity.vehicle.AbstractMinecartContainer; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecartContainer; import org.spongepowered.api.entity.vehicle.minecart.carrier.CarrierMinecart; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/AbstractMinecartMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/AbstractMinecartMixin_API.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/AbstractMinecartMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/AbstractMinecartMixin_API.java index b4f4074fb83..9a2207db953 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/AbstractMinecartMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/AbstractMinecartMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle; +package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle.minecart; -import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.vehicle.minecart.MinecartLike; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartChestMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartChestMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartChestMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartChestMixin_API.java index b930cd56408..2bf826b2468 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartChestMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartChestMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle; +package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle.minecart; -import net.minecraft.world.entity.vehicle.MinecartChest; +import net.minecraft.world.entity.vehicle.minecart.MinecartChest; import org.spongepowered.api.entity.vehicle.minecart.carrier.ChestMinecart; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartCommandBlockMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartCommandBlockMixin_API.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartCommandBlockMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartCommandBlockMixin_API.java index a53afd2da02..52e3f4c9fb1 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartCommandBlockMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartCommandBlockMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle; +package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle.minecart; -import net.minecraft.world.entity.vehicle.MinecartCommandBlock; +import net.minecraft.world.entity.vehicle.minecart.MinecartCommandBlock; import net.minecraft.world.level.BaseCommandBlock; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartFurnaceMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartFurnaceMixin_API.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartFurnaceMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartFurnaceMixin_API.java index ddb17dd9cc3..b384d470155 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartFurnaceMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartFurnaceMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle; +package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle.minecart; -import net.minecraft.world.entity.vehicle.MinecartFurnace; +import net.minecraft.world.entity.vehicle.minecart.MinecartFurnace; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.vehicle.minecart.FurnaceMinecart; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartHopperMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartHopperMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartHopperMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartHopperMixin_API.java index 0fcceb8049a..4f5e4b3389a 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartHopperMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartHopperMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle; +package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle.minecart; -import net.minecraft.world.entity.vehicle.MinecartHopper; +import net.minecraft.world.entity.vehicle.minecart.MinecartHopper; import org.spongepowered.api.entity.vehicle.minecart.carrier.HopperMinecart; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartMixin_API.java index aa186ec4187..db76e281ef2 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartMixin_API.java @@ -22,12 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle; +package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle.minecart; import org.spongepowered.api.entity.vehicle.minecart.Minecart; import org.spongepowered.asm.mixin.Mixin; -@Mixin(net.minecraft.world.entity.vehicle.Minecart.class) +@Mixin(net.minecraft.world.entity.vehicle.minecart.Minecart.class) public abstract class MinecartMixin_API extends AbstractMinecartMixin_API implements Minecart { } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartSpawnerMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartSpawnerMixin_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartSpawnerMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartSpawnerMixin_API.java index 5c9f7acbdcf..62026b7cc23 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartSpawnerMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartSpawnerMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle; +package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle.minecart; -import net.minecraft.world.entity.vehicle.MinecartSpawner; +import net.minecraft.world.entity.vehicle.minecart.MinecartSpawner; import org.spongepowered.api.entity.vehicle.minecart.SpawnerMinecart; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartTNTMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartTNTMixin_API.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartTNTMixin_API.java rename to src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartTNTMixin_API.java index 5ed1652b6e3..effee95c015 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/MinecartTNTMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/entity/vehicle/minecart/MinecartTNTMixin_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle; +package org.spongepowered.common.mixin.api.minecraft.world.entity.vehicle.minecart; -import net.minecraft.world.entity.vehicle.MinecartTNT; +import net.minecraft.world.entity.vehicle.minecart.MinecartTNT; import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.value.Value; import org.spongepowered.api.entity.vehicle.minecart.TNTMinecart; diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/item/ItemCooldownsMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/item/ItemCooldownsMixin_API.java index 6296ba85737..ae0caccdded 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/item/ItemCooldownsMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/item/ItemCooldownsMixin_API.java @@ -25,7 +25,7 @@ package org.spongepowered.common.mixin.api.minecraft.world.item; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemCooldowns; import net.minecraft.world.item.ItemStack; @@ -53,13 +53,13 @@ public abstract class ItemCooldownsMixin_API implements org.spongepowered.api.en @Shadow public abstract boolean shadow$isOnCooldown(ItemStack stack); @Shadow public abstract float shadow$getCooldownPercent(ItemStack stack, float partialTicks); @Shadow public abstract void shadow$addCooldown(final ItemStack stack, final int ticks); - @Shadow public abstract void shadow$addCooldown(final ResourceLocation group, final int ticks); - @Shadow @Final private Map cooldowns; + @Shadow public abstract void shadow$addCooldown(final Identifier group, final int ticks); + @Shadow @Final private Map cooldowns; // @formatter:on - @Shadow public abstract ResourceLocation getCooldownGroup(final ItemStack $$0); + @Shadow public abstract Identifier getCooldownGroup(final ItemStack $$0); @Override public boolean hasCooldown(final org.spongepowered.api.item.inventory.ItemStack stack) { @@ -77,7 +77,7 @@ public boolean hasCooldown(final ResourceKey group) { } private float impl$getCooldownPercent(final Object group) { - final var cooldown = this.cooldowns.get((ResourceLocation) group); + final var cooldown = this.cooldowns.get((Identifier) group); if (cooldown != null) { float $$4 = (float)(cooldown.accessor$endTime() - cooldown.accessor$startTime()); float $$5 = (float)cooldown.accessor$endTime() - ((float)this.tickCount); @@ -117,7 +117,7 @@ public boolean setCooldown(final org.spongepowered.api.item.inventory.ItemStack @Override public boolean setCooldown(final ResourceKey group, final Ticks ticks) { Objects.requireNonNull(group, "group cannot be null!"); - this.shadow$addCooldown((ResourceLocation) (Object) group, SpongeTicks.toSaturatedIntOrInfinite(ticks)); + this.shadow$addCooldown((Identifier) (Object) group, SpongeTicks.toSaturatedIntOrInfinite(ticks)); return ((ItemCooldownsBridge) this).bridge$getSetCooldownResult(); } @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/item/crafting/RecipeManagerMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/item/crafting/RecipeManagerMixin_API.java index 1eb8039ebb7..6d3cbc4d74f 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/item/crafting/RecipeManagerMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/item/crafting/RecipeManagerMixin_API.java @@ -67,7 +67,7 @@ public Optional> byKey(final ResourceKey key) { Objects.requireNonNull(key); // TODO - figure out how to do this better for (var entry : ((RecipeMapAccessor) this.recipes).accessor$byKey().entrySet()) { - if (entry.getKey().location().equals(key)) { + if (entry.getKey().identifier().equals(key)) { return Optional.of(entry.getValue()).map(RecipeHolder::value).map(Recipe.class::cast); } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/GameRules_KeyMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/GameRules_KeyMixin_API.java index 39b2a935325..df194a26208 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/GameRules_KeyMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/GameRules_KeyMixin_API.java @@ -24,49 +24,42 @@ */ package org.spongepowered.common.mixin.api.minecraft.world.level; -import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.gamerules.GameRuleType; import org.spongepowered.api.world.gamerule.GameRule; import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Implements; +import org.spongepowered.asm.mixin.Interface; +import org.spongepowered.asm.mixin.Intrinsic; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.common.accessor.world.level.GameRulesAccessor; import java.lang.reflect.Type; -@Mixin(GameRules.Key.class) -public class GameRules_KeyMixin_API implements GameRule { +@Mixin(net.minecraft.world.level.gamerules.GameRule.class) +@Implements(@Interface(iface = GameRule.class, prefix = "api$")) +public abstract class GameRules_KeyMixin_API implements GameRule { - @Shadow @Final private String id; + @Shadow public abstract String shadow$id(); + + @Shadow private @Final GameRuleType gameRuleType; + @Shadow @Final private T defaultValue; @Override public String name() { - return this.id; + return this.shadow$id(); } @Override public Type valueType() { - final GameRules.Type type = GameRulesAccessor.accessor$GAME_RULE_TYPES().get(this); - final GameRules.Value value = type.createRule(); - if (value instanceof GameRules.BooleanValue) { - return Boolean.class; - } - if (value instanceof GameRules.IntegerValue) { - return Integer.class; - } - throw new IllegalStateException("Unexpected GameRule.Value implementation " + value.getClass().getName()); + return switch (this.gameRuleType) { + case INT -> Integer.class; + case BOOL -> Boolean.class; + default -> throw new IllegalStateException("Unexpected GameRuleType " + this.gameRuleType); + }; } - @Override - @SuppressWarnings("unchecked") - public T defaultValue() { - final GameRules.Type type = GameRulesAccessor.accessor$GAME_RULE_TYPES().get(this); - final GameRules.Value value = type.createRule(); - if (value instanceof GameRules.BooleanValue) { - return (T) (Object)((GameRules.BooleanValue) value).get(); - } - if (value instanceof GameRules.IntegerValue) { - return (T)(Object)((GameRules.IntegerValue) value).get(); - } - throw new IllegalStateException("Unexpected GameRule.Value implementation " + value.getClass().getName()); + @Intrinsic + public T api$defaultValue() { + return this.defaultValue; } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/LevelMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/LevelMixin_API.java index 0bd8ef3729c..400760a2411 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/LevelMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/LevelMixin_API.java @@ -241,7 +241,7 @@ public Vector3i size() { @Override public Context context() { if (this.api$context == null) { - this.api$context = new Context(Context.WORLD_KEY, this.shadow$dimension().location().toString()); + this.api$context = new Context(Context.WORLD_KEY, this.shadow$dimension().identifier().toString()); } return this.api$context; } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/block/entity/CommandBlockEntityMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/block/entity/CommandBlockEntityMixin_API.java index 367285e8f68..848ed9d0a87 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/block/entity/CommandBlockEntityMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/block/entity/CommandBlockEntityMixin_API.java @@ -28,6 +28,7 @@ import net.kyori.adventure.identity.Identity; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.BaseCommandBlock; import net.minecraft.world.level.block.entity.CommandBlockEntity; import org.checkerframework.checker.nullness.qual.NonNull; @@ -51,7 +52,10 @@ public abstract class CommandBlockEntityMixin_API extends BlockEntityMixin_API i @Override public void execute() { - this.shadow$getCommandBlock().performCommand(this.level); + if (!(this.level instanceof ServerLevel sl)) { + return; + } + this.shadow$getCommandBlock().performCommand(sl); } @Override @@ -93,7 +97,11 @@ public String identifier() { @SuppressWarnings({"UnstableApiUsage", "deprecation"}) @Override public void sendMessage(final @NonNull Identity identity, final @NonNull Component message, final @NonNull MessageType type) { - final var source = ((BaseCommandBlockAccessor) this.shadow$getCommandBlock()).invoker$createSource(); + final var block = this.shadow$getCommandBlock(); + if (!(this.level instanceof ServerLevel sl)) { + return; + } + final var source = ((BaseCommandBlockAccessor) block).invoker$createSource(sl); if (source == null) { return; } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/chunk/LevelChunkMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/chunk/LevelChunkMixin_API.java index 96fae23ca05..1c70a77c8e5 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/chunk/LevelChunkMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/chunk/LevelChunkMixin_API.java @@ -27,6 +27,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; +import net.minecraft.server.level.ServerLevel; import net.minecraft.util.Tuple; import net.minecraft.world.DifficultyInstance; import net.minecraft.world.level.BlockGetter; @@ -177,14 +178,20 @@ public Vector3i chunkPosition() { @Override public double regionalDifficultyFactor() { + if (!(this.level instanceof ServerLevel sl)) { + return 0; + } return new DifficultyInstance(this.level.getDifficulty(), this.level.getDayTime(), - this.inhabitedTime().ticks(), this.level.getMoonBrightness()).getEffectiveDifficulty(); + this.inhabitedTime().ticks(), sl.getMoonBrightness(sl.getRespawnData().pos())).getEffectiveDifficulty(); } @Override public double regionalDifficultyPercentage() { + if (!(this.level instanceof ServerLevel sl)) { + return 0; + } return new DifficultyInstance(this.level.getDifficulty(), this.level.getDayTime(), - this.inhabitedTime().ticks(), this.level.getMoonBrightness()).getSpecialMultiplier(); + this.inhabitedTime().ticks(), sl.getMoonBrightness(sl.getRespawnData().pos())).getSpecialMultiplier(); } @Override diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/dimension/DimensionTypeMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/dimension/DimensionTypeMixin_API.java index f1cba73ef1e..c59ccf7f553 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/dimension/DimensionTypeMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/dimension/DimensionTypeMixin_API.java @@ -26,7 +26,7 @@ import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.dimension.DimensionType; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.data.persistence.DataContainer; @@ -57,7 +57,7 @@ public Context context() { } @Nullable - private ResourceLocation api$location() { + private Identifier api$location() { final Registry registry = SpongeCommon.vanillaRegistry(Registries.DIMENSION_TYPE); return registry.getKey((DimensionType) (Object) this); } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/storage/ServerLevelDataMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/storage/ServerLevelDataMixin_API.java index 38e6c17e0cc..d269ea28f49 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/storage/ServerLevelDataMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/storage/ServerLevelDataMixin_API.java @@ -24,7 +24,8 @@ */ package org.spongepowered.common.mixin.api.minecraft.world.level.storage; -import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.gamerules.GameRuleMap; +import net.minecraft.world.level.gamerules.GameRules; import net.minecraft.world.level.storage.ServerLevelData; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.ResourceKey; @@ -39,8 +40,8 @@ import org.spongepowered.api.world.weather.WeatherType; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.common.SpongeCommon; import org.spongepowered.common.accessor.world.level.GameRulesAccessor; -import org.spongepowered.common.accessor.world.level.GameRules_ValueAccessor; import org.spongepowered.common.bridge.world.level.storage.ServerLevelDataBridge; import org.spongepowered.common.util.Constants; import org.spongepowered.common.util.SpongeTicks; @@ -88,14 +89,9 @@ default UUID uniqueId() { @Override default V gameRule(GameRule gameRule) { - final GameRules.Value value = this.shadow$getGameRules().getRule((GameRules.Key) (Object) Objects.requireNonNull(gameRule, + final var value = this.shadow$getGameRules().get((net.minecraft.world.level.gamerules.GameRule) (Object) Objects.requireNonNull(gameRule, "gameRule")); - if (value instanceof GameRules.BooleanValue) { - return (V) Boolean.valueOf(((GameRules.BooleanValue) value).get()); - } else if (value instanceof GameRules.IntegerValue) { - return (V) Integer.valueOf(((GameRules.IntegerValue) value).get()); - } - return null; + return (V) value; } @Override @@ -103,31 +99,17 @@ default void setGameRule(final GameRule gameRule, final V value) { Objects.requireNonNull(gameRule, "gameRule"); Objects.requireNonNull(value, "value"); - final GameRules.Value mValue = this.shadow$getGameRules().getRule((GameRules.Key) (Object) gameRule); - ((GameRules_ValueAccessor) mValue).invoker$deserialize(value.toString()); + this.shadow$getGameRules().set((net.minecraft.world.level.gamerules.GameRule) (Object) gameRule, value, SpongeCommon.server()); } @Override default Map, ?> gameRules() { - final Map, GameRules.Value> rules = - ((GameRulesAccessor) this.shadow$getGameRules()).accessor$rules(); - + final GameRuleMap rules = ((GameRulesAccessor) this.shadow$getGameRules()).accessor$rules(); final Map, Object> apiRules = new HashMap<>(); - for (final Map.Entry, GameRules.Value> rule : rules.entrySet()) { - final GameRule key = (GameRule) (Object) rule.getKey(); - final GameRules.Value mValue = rule.getValue(); - Object value = null; - if (mValue instanceof GameRules.BooleanValue) { - value = ((GameRules.BooleanValue) mValue).get(); - } else if (mValue instanceof GameRules.IntegerValue) { - value = ((GameRules.IntegerValue) mValue).get(); - } - - if (value != null) { - apiRules.put(key, value); - } + for (final var rule : rules.keySet()) { + final GameRule key = (GameRule) (Object) rule; + apiRules.put(key, rules.get(rule)); } - return apiRules; } diff --git a/src/mixins/java/org/spongepowered/common/mixin/api/service/permission/SubjectMixin_API.java b/src/mixins/java/org/spongepowered/common/mixin/api/service/permission/SubjectMixin_API.java index e50c4b7698e..5cfd85d9854 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/api/service/permission/SubjectMixin_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/api/service/permission/SubjectMixin_API.java @@ -26,7 +26,7 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.rcon.RconConsoleSource; -import net.minecraft.world.entity.vehicle.MinecartCommandBlock; +import net.minecraft.world.entity.vehicle.minecart.MinecartCommandBlock; import net.minecraft.world.level.block.entity.CommandBlockEntity; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.common.service.server.permission.BridgeSubject; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/HolderLookup_ProviderMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/HolderLookup_ProviderMixin.java index 6fa56d0aac3..61f7398dca1 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/HolderLookup_ProviderMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/HolderLookup_ProviderMixin.java @@ -25,7 +25,7 @@ package org.spongepowered.common.mixin.core; import net.minecraft.core.HolderLookup; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.registry.Registry; import org.spongepowered.api.registry.RegistryHolder; @@ -54,7 +54,7 @@ default Registry registry(final RegistryType type) { @SuppressWarnings({"rawtypes", "unchecked"}) @Override default Optional> findRegistry(final RegistryType type) { - return (Optional) this.shadow$lookup(ResourceKeyAccessor.invoker$create((ResourceLocation) (Object) type.root(), (ResourceLocation) (Object) type.location())); + return (Optional) this.shadow$lookup(ResourceKeyAccessor.invoker$create((Identifier) (Object) type.root(), (Identifier) (Object) type.location())); } @SuppressWarnings({"rawtypes", "unchecked"}) diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/advancements/AdvancementMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/advancements/AdvancementMixin.java index 23cabe709b7..4cc18f889b7 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/advancements/AdvancementMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/advancements/AdvancementMixin.java @@ -33,7 +33,7 @@ import net.minecraft.advancements.AdvancementType; import net.minecraft.advancements.Criterion; import net.minecraft.advancements.DisplayInfo; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.checkerframework.checker.nullness.qual.MonotonicNonNull; import org.spongepowered.api.advancement.criteria.AdvancementCriterion; import org.spongepowered.api.advancement.criteria.AndCriterion; @@ -74,7 +74,7 @@ public abstract class AdvancementMixin implements AdvancementBridge { @SuppressWarnings({"ConstantConditions"}) @Inject(method = "(Ljava/util/Optional;Ljava/util/Optional;Lnet/minecraft/advancements/AdvancementRewards;Ljava/util/Map;Lnet/minecraft/advancements/AdvancementRequirements;Z)V", at = @At("RETURN")) - private void impl$setUpSpongeFields(final Optional parent, final Optional displayInfo, final AdvancementRewards $$2, + private void impl$setUpSpongeFields(final Optional parent, final Optional displayInfo, final AdvancementRewards $$2, final Map> criteria, final AdvancementRequirements requirements, final boolean sendsTelemetryEvent, final CallbackInfo ci) { displayInfo.ifPresent(info -> ((DisplayInfoBridge) info).bridge$setAdvancement((org.spongepowered.api.advancement.Advancement) this)); } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/advancements/AdvancementProgressMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/advancements/AdvancementProgressMixin.java index 256d15b6fc3..f259e49a37d 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/advancements/AdvancementProgressMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/advancements/AdvancementProgressMixin.java @@ -28,7 +28,7 @@ import net.minecraft.advancements.AdvancementHolder; import net.minecraft.advancements.AdvancementProgress; import net.minecraft.advancements.AdvancementRequirements; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.PlayerAdvancements; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.ResourceKey; @@ -81,7 +81,7 @@ public abstract class AdvancementProgressMixin implements AdvancementProgressBri // @formatter:on @Nullable private Map impl$progressMap; - @Nullable private ResourceLocation impl$advancementKey; + @Nullable private Identifier impl$advancementKey; @Nullable private PlayerAdvancements impl$playerAdvancements; @Override @@ -97,7 +97,7 @@ public abstract class AdvancementProgressMixin implements AdvancementProgressBri } @Override - public ResourceLocation bridge$getAdvancementKey() { + public Identifier bridge$getAdvancementKey() { Preconditions.checkState(this.impl$advancementKey != null, "The advancement is not yet initialized"); return this.impl$advancementKey; } @@ -116,7 +116,7 @@ public abstract class AdvancementProgressMixin implements AdvancementProgressBri } @Override - public void bridge$setAdvancementId(ResourceLocation key) { + public void bridge$setAdvancementId(Identifier key) { Preconditions.checkState(PlatformHooks.INSTANCE.getGeneralHooks().onServerThread()); this.impl$advancementKey = key; } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/adventure/KeyMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/adventure/KeyMixin.java index 44b643db01a..89bff5d64d4 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/adventure/KeyMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/adventure/KeyMixin.java @@ -25,7 +25,7 @@ package org.spongepowered.common.mixin.core.adventure; import net.kyori.adventure.key.Key; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.checkerframework.checker.nullness.qual.NonNull; import org.spongepowered.api.ResourceKey; import org.spongepowered.asm.mixin.Mixin; @@ -40,6 +40,6 @@ public interface KeyMixin { */ @Overwrite static @NonNull Key key(final @NonNull String namespace, final @NonNull String value) { - return (ResourceKey) (Object) ResourceLocation.fromNamespaceAndPath(namespace, value); + return (ResourceKey) (Object) Identifier.fromNamespaceAndPath(namespace, value); } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/block/BedBlockMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/block/BedBlockMixin.java index eecb90a85df..dd3357b9c2e 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/block/BedBlockMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/block/BedBlockMixin.java @@ -67,8 +67,8 @@ public class BedBlockMixin { final BlockSnapshot snapshot = ((ServerWorld) param1).createSnapshot(bedLocation.getX(), bedLocation.getY(), bedLocation.getZ()); if (Sponge.eventManager().post(SpongeEventFactory.createSleepingEventFailed(currentCause, snapshot, (Living) param3))) { param3.startSleepInBed(param2).ifLeft((param1x) -> { - if (param1x != null) { - param3.displayClientMessage(param1x.getMessage(), true); + if (param1x != null && param1x.message() != null) { + param3.displayClientMessage(param1x.message(), true); } }); cir.setReturnValue(InteractionResult.SUCCESS); diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/client/MinecraftMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/client/MinecraftMixin.java index 2d1259ad4fa..e2cc02207db 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/client/MinecraftMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/client/MinecraftMixin.java @@ -105,7 +105,7 @@ public MinecraftMixin(String param0) { Launch.instance().lifecycle().callStoppingEngineEvent(this); } - @Redirect(method = "disconnect(Lnet/minecraft/client/gui/screens/Screen;Z)V", at = @At(value = "FIELD", target = "Lnet/minecraft/client/Minecraft;singleplayerServer:Lnet/minecraft/client/server/IntegratedServer;", opcode = + @Redirect(method = "disconnect(Lnet/minecraft/client/gui/screens/Screen;ZZ)V", at = @At(value = "FIELD", target = "Lnet/minecraft/client/Minecraft;singleplayerServer:Lnet/minecraft/client/server/IntegratedServer;", opcode = Opcodes.PUTFIELD)) private void impl$storeTemporaryServerRef(Minecraft minecraft, IntegratedServer server) { ((MinecraftBridge) minecraft).bridge$setTemporaryIntegratedServer(this.singleplayerServer); @@ -121,7 +121,7 @@ public MinecraftMixin(String param0) { } } - @Inject(method = "close", at = @At(value = "INVOKE", target = "Lnet/minecraft/Util;shutdownExecutors()V")) + @Inject(method = "close", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;shutdownExecutors()V")) private void impl$callStoppedGame(final CallbackInfo ci) { Launch.instance().lifecycle().callStoppedGameEvent(); } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/commands/CommandFunctionMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/commands/CommandFunctionMixin.java index 88cd8826d2b..1251b726baa 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/commands/CommandFunctionMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/commands/CommandFunctionMixin.java @@ -29,7 +29,7 @@ import com.mojang.brigadier.CommandDispatcher; import net.minecraft.commands.ExecutionCommandSource; import net.minecraft.commands.functions.CommandFunction; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.spongepowered.api.command.CommandCause; import org.spongepowered.api.event.CauseStackManager; import org.spongepowered.api.service.permission.PermissionService; @@ -45,7 +45,7 @@ public interface CommandFunctionMixin { @WrapMethod(method = "fromLines") private static > CommandFunction impl$onFromLines( - final ResourceLocation $$0, final CommandDispatcher $$1, final T $$2, final List $$3, final Operation> original) { + final Identifier $$0, final CommandDispatcher $$1, final T $$2, final List $$3, final Operation> original) { if ($$1 instanceof final DelegatingCommandDispatcher delegatingCommandDispatcher) { try (final CauseStackManager.StackFrame frame = PhaseTracker.getInstance().pushCauseFrame()) { frame.pushCause(delegatingCommandDispatcher.permissionService().newSubjectReference(PermissionService.SUBJECTS_FUNCTION, $$0.toString()).resolve().join()); diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/commands/CommandSourceStackMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/commands/CommandSourceStackMixin.java index 1a54021147e..a27740e9733 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/commands/CommandSourceStackMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/commands/CommandSourceStackMixin.java @@ -32,6 +32,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.permissions.PermissionSet; import net.minecraft.util.TaskChainer; import net.minecraft.world.entity.Entity; import net.minecraft.world.phys.Vec2; @@ -54,6 +55,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import org.spongepowered.common.SpongeCommon; import org.spongepowered.common.accessor.commands.CommandSourceStackAccessor; import org.spongepowered.common.accessor.world.entity.player.PlayerAccessor; import org.spongepowered.common.bridge.commands.CommandSourceBridge; @@ -68,11 +70,12 @@ public abstract class CommandSourceStackMixin implements CommandSourceStackBridge { + //@formatter:off @Shadow @Final private CommandSource source; @Shadow @Final @Mutable private Vec3 worldPosition; @Shadow @Final @Mutable private Vec2 rotation; @Shadow @Final @Mutable private ServerLevel level; - @Shadow @Final @Mutable private int permissionLevel; + @Shadow @Final @Mutable private PermissionSet permissions; @Shadow @Final private Component displayName; @Shadow @Final private String textName; @@ -85,33 +88,35 @@ public abstract class CommandSourceStackMixin implements CommandSourceStackBridg @Shadow @Final private CommandSigningContext signingContext; @Shadow @Final private TaskChainer chatMessageChainer; + //@formatter:on + private Cause impl$cause; @Nullable private Supplier impl$potentialPermissionNode = null; private @Nullable PermissionService impl$permissionService; - @Inject(method = "(Lnet/minecraft/commands/CommandSource;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/phys/Vec2;Lnet/minecraft/server/level/ServerLevel;ILjava/lang/String;Lnet/minecraft/network/chat/Component;Lnet/minecraft/server/MinecraftServer;Lnet/minecraft/world/entity/Entity;ZLnet/minecraft/commands/CommandResultCallback;Lnet/minecraft/commands/arguments/EntityAnchorArgument$Anchor;Lnet/minecraft/commands/CommandSigningContext;Lnet/minecraft/util/TaskChainer;)V", - at = @At("RETURN")) + @Inject(method = "(Lnet/minecraft/commands/CommandSource;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/phys/Vec2;Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/server/permissions/PermissionSet;Ljava/lang/String;Lnet/minecraft/network/chat/Component;Lnet/minecraft/server/MinecraftServer;Lnet/minecraft/world/entity/Entity;ZLnet/minecraft/commands/CommandResultCallback;Lnet/minecraft/commands/arguments/EntityAnchorArgument$Anchor;Lnet/minecraft/commands/CommandSigningContext;Lnet/minecraft/util/TaskChainer;)V", + at = @At("RETURN")) private void impl$setCauseOnConstruction( - final CommandSource $$0, - final Vec3 $$1, - final Vec2 $$2, - final ServerLevel $$3, - final int $$4, - final String $$5, - final Component $$6, - final MinecraftServer $$7, - final Entity $$8, - final boolean $$9, - final CommandResultCallback $$10, - final EntityAnchorArgument.Anchor $$11, - final CommandSigningContext $$12, - final TaskChainer $$13, - final CallbackInfo ci + final CommandSource $$0, + final Vec3 $$1, + final Vec2 $$2, + final ServerLevel $$3, + final PermissionSet permissionLevel, + final String $$5, + final Component $$6, + final MinecraftServer $$7, + final Entity $$8, + final boolean $$9, + final CommandResultCallback $$10, + final EntityAnchorArgument.Anchor $$11, + final CommandSigningContext $$12, + final TaskChainer $$13, + final CallbackInfo ci ) { this.impl$cause = PhaseTracker.getInstance().currentCause(); final EventContext context = this.impl$cause.context(); - context.get(EventContextKeys.LOCATION).ifPresent(x ->{ + context.get(EventContextKeys.LOCATION).ifPresent(x -> { this.worldPosition = VecHelper.toVanillaVector3d(x.position()); this.level = (ServerLevel) x.world(); }); @@ -119,11 +124,25 @@ public abstract class CommandSourceStackMixin implements CommandSourceStackBridg context.get(EventContextKeys.ROTATION).ifPresent(x -> this.rotation = new Vec2((float) x.x(), (float) x.y())); context.get(EventContextKeys.SUBJECT).ifPresent(x -> { if (x instanceof PlayerAccessor pa) { - this.permissionLevel = pa.invoker$getPermissionLevel(); + this.permissions = pa.invoker$permissions(); } else if (x instanceof MinecraftServer ms && !ms.isSingleplayer()) { - this.permissionLevel = 4; + this.permissions = PermissionSet.ALL_PERMISSIONS; } }); + this.permissions = (incoming) -> { + if (this.impl$potentialPermissionNode != null) { + final var opLevel = SpongeCommon.server().operatorUserPermissions().level(); + final String perm = this.impl$potentialPermissionNode.get(); + // This will register the permission with the first op level we retrieve. + if (this.impl$permissionService != null) { + SpongePermissions.registerPermission(this.impl$permissionService, perm, opLevel); + } else if (Sponge.isServerAvailable()) { + SpongePermissions.registerPermission(Sponge.server().serviceProvider().permissionService(), perm, opLevel); + } + return ((CommandCause) this).hasPermission(perm); + } + return permissionLevel.hasPermission(incoming); + }; } /* @@ -132,15 +151,15 @@ public abstract class CommandSourceStackMixin implements CommandSourceStackBridg * FIRST. That way, we don't overwrite any changes we then need to make. */ @Inject(method = { - "withEntity", - "withPosition", - "withRotation(Lnet/minecraft/world/phys/Vec2;)Lnet/minecraft/commands/CommandSourceStack;", - "withCallback(Lnet/minecraft/commands/CommandResultCallback;)Lnet/minecraft/commands/CommandSourceStack;", - "withSuppressedOutput", - "withPermission", - "withMaximumPermission", - "withAnchor", - "withLevel" + "withEntity", + "withPosition", + "withRotation(Lnet/minecraft/world/phys/Vec2;)Lnet/minecraft/commands/CommandSourceStack;", + "withCallback(Lnet/minecraft/commands/CommandResultCallback;)Lnet/minecraft/commands/CommandSourceStack;", + "withSuppressedOutput", + "withPermission", + "withMaximumPermission", + "withAnchor", + "withLevel" }, at = @At("RETURN")) private void impl$copyPermissionOnCopy(final CallbackInfoReturnable cir) { if (cir.getReturnValue() != (Object) this) { @@ -154,8 +173,8 @@ public abstract class CommandSourceStackMixin implements CommandSourceStackBridg @Override public CommandCause bridge$withCurrentCause() { // Cause is set in ctor. - final CommandCause instance = (CommandCause) CommandSourceStackAccessor.invoker$new(this.source, this.worldPosition, this.rotation, this.level, this.permissionLevel, - this.textName, this.displayName, this.server, this.entity, this.silent, this.resultCallback, this.anchor, this.signingContext, this.chatMessageChainer); + final CommandCause instance = (CommandCause) CommandSourceStackAccessor.invoker$new(this.source, this.worldPosition, this.rotation, this.level, this.permissions, + this.textName, this.displayName, this.server, this.entity, this.silent, this.resultCallback, this.anchor, this.signingContext, this.chatMessageChainer); ((CommandSourceStackBridge) instance).bridge$permissionService(this.impl$permissionService); return instance; } @@ -174,9 +193,9 @@ public abstract class CommandSourceStackMixin implements CommandSourceStackBridg private void impl$updateCauseOnWithWorld(final ServerLevel serverWorld, final CallbackInfoReturnable cir) { if (cir.getReturnValue() != (Object) this) { final ServerLocation location = this.impl$cause.context().get(EventContextKeys.LOCATION) - .map(x -> ServerLocation.of((org.spongepowered.api.world.server.ServerWorld) serverWorld, x.position())) - .orElseGet(() -> ServerLocation.of((org.spongepowered.api.world.server.ServerWorld) serverWorld, - VecHelper.toVector3d(cir.getReturnValue().getPosition()))); + .map(x -> ServerLocation.of((org.spongepowered.api.world.server.ServerWorld) serverWorld, x.position())) + .orElseGet(() -> ServerLocation.of((org.spongepowered.api.world.server.ServerWorld) serverWorld, + VecHelper.toVector3d(cir.getReturnValue().getPosition()))); ((CommandSourceStackBridge) cir.getReturnValue()).bridge$setCause(this.impl$applyToCause(EventContextKeys.LOCATION, location)); } } @@ -186,8 +205,8 @@ public abstract class CommandSourceStackMixin implements CommandSourceStackBridg if (cir.getReturnValue() != (Object) this) { final org.spongepowered.math.vector.Vector3d position = VecHelper.toVector3d(pos); final ServerLocation location = this.impl$cause.context().get(EventContextKeys.LOCATION) - .map(x -> ServerLocation.of(x.world(), position)) - .orElseGet(() -> ServerLocation.of((org.spongepowered.api.world.server.ServerWorld) cir.getReturnValue().getLevel(), position)); + .map(x -> ServerLocation.of(x.world(), position)) + .orElseGet(() -> ServerLocation.of((org.spongepowered.api.world.server.ServerWorld) cir.getReturnValue().getLevel(), position)); ((CommandSourceStackBridge) cir.getReturnValue()).bridge$setCause(this.impl$applyToCause(EventContextKeys.LOCATION, location)); } } @@ -200,21 +219,6 @@ public abstract class CommandSourceStackMixin implements CommandSourceStackBridg } } - @Inject(method = "hasPermission", at = @At(value = "HEAD"), cancellable = true) - private void impl$checkPermission(final int opLevel, final CallbackInfoReturnable cir) { - if (this.impl$potentialPermissionNode != null) { - final String perm = this.impl$potentialPermissionNode.get(); - // This will register the permission with the first op level we retrieve. - if (this.impl$permissionService != null) { - SpongePermissions.registerPermission(this.impl$permissionService, perm, opLevel); - } else if (Sponge.isServerAvailable()) { - SpongePermissions.registerPermission(Sponge.server().serviceProvider().permissionService(), perm, opLevel); - } - cir.setReturnValue(((CommandCause) this).hasPermission(perm)); - } - // fall through to the op level check if we haven't set a permission node. - } - @Override public void bridge$setPotentialPermissionNode(final @Nullable Supplier permission) { this.impl$potentialPermissionNode = permission; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/commands/arguments/DimensionArgumentMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/commands/arguments/DimensionArgumentMixin.java index 73adc701a2b..a4dd0601e21 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/commands/arguments/DimensionArgumentMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/commands/arguments/DimensionArgumentMixin.java @@ -26,17 +26,17 @@ import com.mojang.brigadier.arguments.ArgumentType; import net.minecraft.commands.arguments.DimensionArgument; -import net.minecraft.commands.arguments.ResourceLocationArgument; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.commands.arguments.IdentifierArgument; +import net.minecraft.resources.Identifier; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.common.bridge.commands.arguments.CompletionsArgumentTypeBridge; @Mixin(DimensionArgument.class) -public abstract class DimensionArgumentMixin implements CompletionsArgumentTypeBridge { +public abstract class DimensionArgumentMixin implements CompletionsArgumentTypeBridge { @Override - public ArgumentType bridge$clientSideCompletionType() { - return ResourceLocationArgument.id(); + public ArgumentType bridge$clientSideCompletionType() { + return IdentifierArgument.id(); } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/core/MappedRegistryMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/core/MappedRegistryMixin.java index 5a1e8c58bf0..112a355627f 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/core/MappedRegistryMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/core/MappedRegistryMixin.java @@ -31,7 +31,7 @@ import net.minecraft.core.MappedRegistry; import net.minecraft.core.RegistrationInfo; import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.checkerframework.checker.nullness.qual.Nullable; import org.objectweb.asm.Opcodes; import org.spongepowered.api.ResourceKey; @@ -73,7 +73,7 @@ public abstract class MappedRegistryMixin implements RegistryBridge, Writa @Shadow private boolean frozen; @Shadow @Final private ObjectList> byId; @Shadow @Final private Reference2IntMap toId; - @Shadow @Final private Map> byLocation; + @Shadow @Final private Map> byLocation; @Shadow @Final private Map, Holder.Reference> byKey; @Shadow @Final private Map> byValue; @Shadow @Final private Map, RegistrationInfo> registrationInfos; @@ -108,7 +108,7 @@ public abstract class MappedRegistryMixin implements RegistryBridge, Writa private void impl$setType(final net.minecraft.resources.ResourceKey> key, final Lifecycle lifecycle, boolean $$2, final CallbackInfo ci) { this.impl$type = new SpongeRegistryType((ResourceKey) (Object) ((ResourceKeyAccessor) key).accessor$registryName(), - (ResourceKey) (Object) key.location()); + (ResourceKey) (Object) key.identifier()); } @@ -118,9 +118,9 @@ public abstract class MappedRegistryMixin implements RegistryBridge, Writa final net.minecraft.resources.ResourceKey> resourceKey = ((MappedRegistry) (Object) this).key(); final ResourceKey root = (ResourceKey) (Object) ((ResourceKeyAccessor) resourceKey).accessor$registryName(); - final ResourceKey location = (ResourceKey) (Object) resourceKey.location(); + final ResourceKey location = (ResourceKey) (Object) resourceKey.identifier(); this.bridge$register(new SpongeRegistryEntry<>(new SpongeRegistryType<>(root, location), - (ResourceKey) (Object) $$0.location(), $$1)); + (ResourceKey) (Object) $$0.identifier(), $$1)); } @Override @@ -157,10 +157,10 @@ public abstract class MappedRegistryMixin implements RegistryBridge, Writa for (int i = id; i < this.byId.size(); i++) { this.toId.put(this.byId.get(i).value(), i); } - this.byLocation.remove(key.location()); + this.byLocation.remove(key.identifier()); this.byValue.remove(value.value()); this.registrationInfos.remove(key); - this.impl$entries.remove((ResourceKey) (Object) key.location()); + this.impl$entries.remove((ResourceKey) (Object) key.identifier()); } @Inject(method = "freeze", at = @At(value = "FIELD", target = "Lnet/minecraft/core/MappedRegistry;frozen:Z", opcode = Opcodes.PUTFIELD)) @@ -195,7 +195,7 @@ public abstract class MappedRegistryMixin implements RegistryBridge, Writa private void impl$appendRegister(final Supplier> supplier) { supplier.get().forEach((vk, vi, vv) -> this.shadow$register( - net.minecraft.resources.ResourceKey.create(this.key, (ResourceLocation) (Object) vk), + net.minecraft.resources.ResourceKey.create(this.key, (Identifier) (Object) vk), vv, RegistrationInfo.BUILT_IN )); diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/network/protocol/login/ClientboundCustomQueryPacketMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/network/protocol/login/ClientboundCustomQueryPacketMixin.java index 2c3111d5464..874d59b41eb 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/network/protocol/login/ClientboundCustomQueryPacketMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/network/protocol/login/ClientboundCustomQueryPacketMixin.java @@ -27,7 +27,7 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.protocol.login.ClientboundCustomQueryPacket; import net.minecraft.network.protocol.login.custom.CustomQueryPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -44,7 +44,7 @@ public abstract class ClientboundCustomQueryPacketMixin { // @formatter: on @Inject(method = "readPayload", at = @At("HEAD"), cancellable = true) - private static void impl$onReadUnknownPayload(final ResourceLocation $$0, final FriendlyByteBuf $$1, final CallbackInfoReturnable cir) { + private static void impl$onReadUnknownPayload(final Identifier $$0, final FriendlyByteBuf $$1, final CallbackInfoReturnable cir) { final int readableBytes = $$1.readableBytes(); if (readableBytes >= 0 && readableBytes <= ClientboundCustomQueryPacketMixin.MAX_PAYLOAD_SIZE) { final var payload = $$1.readBytes(readableBytes); diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/resources/RegistryDataLoaderMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/resources/RegistryDataLoaderMixin.java index 85e36189f3a..f580294ca6b 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/resources/RegistryDataLoaderMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/resources/RegistryDataLoaderMixin.java @@ -30,10 +30,10 @@ import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.ChatType; import net.minecraft.network.chat.ChatTypeDecoration; +import net.minecraft.resources.Identifier; import net.minecraft.resources.RegistryDataLoader; import net.minecraft.resources.RegistryOps; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.ResourceManager; import org.spongepowered.api.adventure.ChatTypes; import org.spongepowered.asm.mixin.Mixin; @@ -58,8 +58,8 @@ public class RegistryDataLoaderMixin { { if (Registries.CHAT_TYPE.equals($$2.key())) { final ChatTypeDecoration narration = ChatTypeDecoration.withSender("chat.type.text.narrate"); - $$2.register(ResourceKey.create($$2.key(), (ResourceLocation) (Object) ChatTypes.CUSTOM_CHAT.location()), (E) new ChatType(ChatTypeDecoration.withSender("%s%s"), narration), RegistrationInfo.BUILT_IN); - $$2.register(ResourceKey.create($$2.key(), (ResourceLocation) (Object) ChatTypes.CUSTOM_MESSAGE.location()), (E) new ChatType(ChatTypeDecoration.teamMessage("%s%s%s"), narration), RegistrationInfo.BUILT_IN); + $$2.register(ResourceKey.create($$2.key(), (Identifier) (Object) ChatTypes.CUSTOM_CHAT.location()), (E) new ChatType(ChatTypeDecoration.withSender("%s%s"), narration), RegistrationInfo.BUILT_IN); + $$2.register(ResourceKey.create($$2.key(), (Identifier) (Object) ChatTypes.CUSTOM_MESSAGE.location()), (E) new ChatType(ChatTypeDecoration.teamMessage("%s%s%s"), narration), RegistrationInfo.BUILT_IN); } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/server/MinecraftServerMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/server/MinecraftServerMixin.java index a854ee810ec..7985beaa640 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/server/MinecraftServerMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/server/MinecraftServerMixin.java @@ -177,7 +177,7 @@ protected boolean shouldRun(@NonNull Runnable runnable) { final @Nullable ServerLevel level = this.shadow$getLevel(SpongeWorldManager.createRegistryKey(k)); if (level != null) { if (log) { - MinecraftServerMixin.LOGGER.info("Saving chunks for level '{}'/{}", level, level.dimension().location()); + MinecraftServerMixin.LOGGER.info("Saving chunks for level '{}'/{}", level, level.dimension().identifier()); } level.save(null, false, level.noSave); return true; @@ -231,7 +231,7 @@ public Subject subject() { target = "(Lnet/minecraft/server/MinecraftServer;Ljava/util/concurrent/Executor;Lnet/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess;Lnet/minecraft/world/level/storage/ServerLevelData;Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/world/level/dimension/LevelStem;ZJLjava/util/List;ZLnet/minecraft/world/RandomSequences;)Lnet/minecraft/server/level/ServerLevel;" ), slice = @Slice( from = @At(value = "INVOKE", target = "Lnet/minecraft/core/Registry;getValue(Lnet/minecraft/resources/ResourceKey;)Ljava/lang/Object;"), - to = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;readScoreboard(Lnet/minecraft/world/level/storage/DimensionDataStorage;)V") + to = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerLevel;getDataStorage()Lnet/minecraft/world/level/storage/DimensionDataStorage;") )) private void impl$onCreateDefaultLevel(final CallbackInfo ci, @Local final ServerLevelData levelData, @Local final LevelStem levelStem) { ((PrimaryLevelDataBridge) levelData).bridge$populateFromLevelStem(levelStem); @@ -412,7 +412,7 @@ public boolean saveAllChunks(final boolean suppressLog, final boolean flush, fin // Sponge end if (autoSave.log) { - LOGGER.info("Saving chunks for level '{}'/{}", level, level.dimension().location()); + LOGGER.info("Saving chunks for level '{}'/{}", level, level.dimension().identifier()); } level.save(null, flush, level.noSave && !isForced); diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/server/ReloadableServerResourcesMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/server/ReloadableServerResourcesMixin.java index 189bba4c36f..12c7981b095 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/server/ReloadableServerResourcesMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/server/ReloadableServerResourcesMixin.java @@ -35,6 +35,7 @@ import net.minecraft.server.ReloadableServerRegistries; import net.minecraft.server.ReloadableServerResources; import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.permissions.PermissionSet; import net.minecraft.world.flag.FeatureFlagSet; import org.spongepowered.api.Sponge; import org.spongepowered.api.registry.RegistryHolder; @@ -55,9 +56,12 @@ public abstract class ReloadableServerResourcesMixin { @SuppressWarnings({"unchecked", "rawtypes"}) @ModifyExpressionValue(method = "loadResources", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/ReloadableServerRegistries;reload(Lnet/minecraft/core/LayeredRegistryAccess;Ljava/util/List;Lnet/minecraft/server/packs/resources/ResourceManager;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;")) - private static CompletableFuture impl$onLoadResources(final CompletableFuture original, - final ResourceManager $$0, final LayeredRegistryAccess $$1, final List> $$2, - final FeatureFlagSet $$3, final Commands.CommandSelection $$4, final int $$5, final Executor $$6, final Executor $$7) { + private static CompletableFuture impl$onLoadResources( + final CompletableFuture original, final ResourceManager $$0, + final LayeredRegistryAccess $$1, final List> $$2, + final FeatureFlagSet $$3, final Commands.CommandSelection $$4, final PermissionSet $$5, + final Executor $$6, final Executor $$7 + ) { return original.thenApply(r -> { final SpongeRegistryHolder spongeRegistryHolder = (SpongeRegistryHolder) $$0; spongeRegistryHolder.setRootMinecraftRegistry(r.layers().compositeAccess()); @@ -81,9 +85,12 @@ public abstract class ReloadableServerResourcesMixin { } @ModifyReturnValue(method = "loadResources", at = @At(value = "RETURN")) - private static CompletableFuture impl$onLoaded(final CompletableFuture original, - final ResourceManager $$0, final LayeredRegistryAccess $$1, final List> $$2, - final FeatureFlagSet $$3, final Commands.CommandSelection $$4, final int $$5, final Executor $$6, final Executor $$7) { + private static CompletableFuture impl$onLoaded( + final CompletableFuture original, final ResourceManager $$0, + final LayeredRegistryAccess $$1, final List> $$2, + final FeatureFlagSet $$3, final Commands.CommandSelection $$4, final PermissionSet $$5, + final Executor $$6, final Executor $$7 + ) { return original.thenApply(r -> { Launch.instance().lifecycle().endEstablishServerRegistries((RegistryHolder) $$0); return r; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/server/ServerAdvancementManagerMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/server/ServerAdvancementManagerMixin.java index bb1e1a3c9f2..9b835c58b54 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/server/ServerAdvancementManagerMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/server/ServerAdvancementManagerMixin.java @@ -29,7 +29,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import net.minecraft.advancements.Advancement; import net.minecraft.advancements.AdvancementNode; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.ServerAdvancementManager; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.util.profiling.ProfilerFiller; @@ -59,7 +59,7 @@ public abstract class ServerAdvancementManagerMixin { @SuppressWarnings({"unchecked"}) @WrapMethod(method = "apply(Ljava/util/Map;Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)V") - private void impl$onApply(final Map $$0, final ResourceManager $$1, final ProfilerFiller $$2, final Operation original) { + private void impl$onApply(final Map $$0, final ResourceManager $$1, final ProfilerFiller $$2, final Operation original) { final RegistryHolderLogic registryHolder = ((SpongeRegistryHolder) $$1).registryHolder(); final Registry registry = (Registry) (Object) registryHolder.registry(RegistryTypes.ADVANCEMENT); $$0.forEach((k, v) -> registry.register((ResourceKey) (Object) k, v)); @@ -70,7 +70,7 @@ public abstract class ServerAdvancementManagerMixin { @WrapOperation(method = "apply(Ljava/util/Map;Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/advancements/TreeNodePosition;run(Lnet/minecraft/advancements/AdvancementNode;)V")) private void impl$onLayout(final AdvancementNode instance, final Operation original, - final Map $$0, final ResourceManager $$1, final ProfilerFiller $$2) { + final Map $$0, final ResourceManager $$1, final ProfilerFiller $$2) { original.call(instance); final Cause cause = PhaseTracker.getInstance().currentCause(); diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/server/WorldLoaderMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/server/WorldLoaderMixin.java index b3b0d496578..cd3f395554e 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/server/WorldLoaderMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/server/WorldLoaderMixin.java @@ -31,6 +31,9 @@ import com.mojang.datafixers.util.Pair; import net.minecraft.server.WorldLoader; import net.minecraft.server.packs.resources.CloseableResourceManager; +import net.minecraft.server.permissions.LevelBasedPermissionSet; +import net.minecraft.server.permissions.PermissionLevel; +import net.minecraft.server.permissions.PermissionSet; import net.minecraft.world.level.WorldDataConfiguration; import org.spongepowered.api.registry.Registry; import org.spongepowered.api.registry.RegistryHolder; @@ -52,7 +55,11 @@ public abstract class WorldLoaderMixin { final Pair pair = original.call(instance); final CloseableResourceManager resourceManager = pair.getSecond(); final Lifecycle lifecycle = Launch.instance().lifecycle(); - lifecycle.establishServerServices(resourceManager, $$0.functionCompilationLevel()); + var permLevel = $$0.functionCompilationPermissions() == PermissionSet.ALL_PERMISSIONS ? PermissionLevel.OWNERS : PermissionLevel.ALL; + if ($$0.functionCompilationPermissions() instanceof LevelBasedPermissionSet lbps) { + permLevel = lbps.level(); + } + lifecycle.establishServerServices(resourceManager, permLevel); lifecycle.setWorldDataConfiguration(pair.getFirst()); lifecycle.beginEstablishServerRegistries((RegistryHolder) resourceManager); return pair; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/server/commands/DifficultyCommandMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/server/commands/DifficultyCommandMixin.java index c54e3ae3e50..8888c156c8e 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/server/commands/DifficultyCommandMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/server/commands/DifficultyCommandMixin.java @@ -31,6 +31,7 @@ import net.minecraft.network.protocol.game.ClientboundChangeDifficultyPacket; import net.minecraft.server.commands.DifficultyCommand; import net.minecraft.world.Difficulty; +import net.minecraft.world.level.gamerules.GameRules; import net.minecraft.world.level.storage.LevelData; import org.spongepowered.api.world.server.storage.ServerWorldProperties; import org.spongepowered.asm.mixin.Final; @@ -38,7 +39,6 @@ import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.common.SpongeCommon; -import org.spongepowered.common.accessor.server.MinecraftServerAccessor; @Mixin(DifficultyCommand.class) public abstract class DifficultyCommandMixin { @@ -58,7 +58,7 @@ public static int setDifficulty(CommandSourceStack source, Difficulty difficulty } else { final LevelData levelData = source.getLevel().getLevelData(); ((ServerWorldProperties) levelData).setDifficulty((org.spongepowered.api.world.difficulty.Difficulty) (Object) difficulty); - source.getLevel().setSpawnSettings(((MinecraftServerAccessor) SpongeCommon.server()).invoker$isSpawningMonsters()); + source.getLevel().setSpawnSettings(SpongeCommon.server().getWorldData().getGameRules().get(GameRules.SPAWN_MONSTERS)); source.getLevel().getPlayers(p -> true).forEach(p -> p.connection.send(new ClientboundChangeDifficultyPacket(levelData.getDifficulty(), levelData.isDifficultyLocked()))); source.sendSuccess(() -> Component.translatable("commands.difficulty.success", difficulty.getDisplayName()), true); diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ChunkHolderMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ChunkHolderMixin.java index 6b3535cd498..02072e21807 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ChunkHolderMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ChunkHolderMixin.java @@ -66,7 +66,7 @@ abstract class ChunkHolderMixin extends GenerationChunkHolderMixin { if (ShouldFire.CHUNK_EVENT_LOAD) { final Vector3i chunkPos = VecHelper.toVector3i(chunk.getPos()); final ChunkEvent.Load event = SpongeEventFactory.createChunkEventLoad(PhaseTracker.getInstance().currentCause(), - (WorldChunk) chunk, chunkPos, (ResourceKey) (Object) chunk.getLevel().dimension().location()); + (WorldChunk) chunk, chunkPos, (ResourceKey) (Object) chunk.getLevel().dimension().identifier()); SpongeCommon.post(event); } }); @@ -78,7 +78,7 @@ abstract class ChunkHolderMixin extends GenerationChunkHolderMixin { if (this.impl$loadedChunk != null && ShouldFire.CHUNK_EVENT_UNLOAD_PRE) { final Vector3i chunkPos = VecHelper.toVector3i(this.impl$loadedChunk.getPos()); final ChunkEvent.Unload event = SpongeEventFactory.createChunkEventUnloadPre(PhaseTracker.getInstance().currentCause(), - (WorldChunk) this.impl$loadedChunk, chunkPos, (ResourceKey) (Object) this.impl$loadedChunk.getLevel().dimension().location()); + (WorldChunk) this.impl$loadedChunk, chunkPos, (ResourceKey) (Object) this.impl$loadedChunk.getLevel().dimension().identifier()); SpongeCommon.post(event); } } @@ -88,7 +88,7 @@ abstract class ChunkHolderMixin extends GenerationChunkHolderMixin { if (this.impl$loadedChunk != null && ShouldFire.CHUNK_EVENT_UNLOAD_POST) { final Vector3i chunkPos = VecHelper.toVector3i(this.impl$loadedChunk.getPos()); final ChunkEvent.Unload event = SpongeEventFactory.createChunkEventUnloadPost(PhaseTracker.getInstance().currentCause(), chunkPos, - (ResourceKey) (Object) this.impl$loadedChunk.getLevel().dimension().location()); + (ResourceKey) (Object) this.impl$loadedChunk.getLevel().dimension().identifier()); SpongeCommon.post(event); } this.impl$loadedChunk = null; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ChunkMapMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ChunkMapMixin.java index 25936a940a7..ba9890194a2 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ChunkMapMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ChunkMapMixin.java @@ -51,7 +51,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.common.SpongeCommon; import org.spongepowered.common.accessor.server.level.ServerChunkCacheAccessor; -import org.spongepowered.common.accessor.world.level.chunk.storage.ChunkStorageAccessor; +import org.spongepowered.common.accessor.world.level.chunk.storage.SimpleRegionStorageAccessor; import org.spongepowered.common.bridge.server.level.ServerLevelBridge; import org.spongepowered.common.bridge.world.DistanceManagerBridge; import org.spongepowered.common.bridge.world.level.chunk.LevelChunkBridge; @@ -85,7 +85,7 @@ public abstract class ChunkMapMixin implements ChunkMapBridge { @Inject(method = "", at = @At("RETURN")) private void impl$setIOWorkerDimension(final CallbackInfo ci) { - ((IOWorkerBridge) ((ChunkStorageAccessor) this).accessor$worker()).bridge$setDimension(SpongeIOWorkerType.CHUNK, this.level.dimension()); + ((IOWorkerBridge) ((SimpleRegionStorageAccessor) this).accessor$worker()).bridge$setDimension(SpongeIOWorkerType.CHUNK, this.level.dimension()); } @Redirect(method = "save", @@ -136,7 +136,7 @@ public abstract class ChunkMapMixin implements ChunkMapBridge { if (ShouldFire.CHUNK_EVENT_BLOCKS_SAVE_PRE) { final Vector3i chunkPos = VecHelper.toVector3i(var1.getPos()); final ChunkEvent.Blocks.Save.Pre postSave = SpongeEventFactory.createChunkEventBlocksSavePre(PhaseTracker.getInstance().currentCause(), - ((BlockChunk) var1), chunkPos, (ResourceKey) (Object) this.level.dimension().location()); + ((BlockChunk) var1), chunkPos, (ResourceKey) (Object) this.level.dimension().identifier()); SpongeCommon.post(postSave); if (postSave.isCancelled()) { cir.setReturnValue(false); diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/server/level/GenerationChunkHolderMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/server/level/GenerationChunkHolderMixin.java index 20809321a9f..eef54ef2c0f 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/server/level/GenerationChunkHolderMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/server/level/GenerationChunkHolderMixin.java @@ -74,7 +74,7 @@ public abstract class GenerationChunkHolderMixin { final Vector3i chunkPos = VecHelper.toVector3i(chunk.getPos()); final ChunkEvent.Generated event = SpongeEventFactory.createChunkEventGenerated( PhaseTracker.getInstance().currentCause(), chunkPos, - (ResourceKey) (Object) chunk.getLevel().dimension().location() + (ResourceKey) (Object) chunk.getLevel().dimension().identifier() ); SpongeCommon.post(event); } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ServerLevelMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ServerLevelMixin.java index 5a9c64cfd6c..c45e077e024 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ServerLevelMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ServerLevelMixin.java @@ -29,7 +29,6 @@ import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.llamalad7.mixinextras.sugar.Share; import com.llamalad7.mixinextras.sugar.ref.LocalBooleanRef; -import net.minecraft.Util; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.core.particles.BlockParticleOption; @@ -38,7 +37,7 @@ import net.minecraft.core.registries.Registries; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.game.ClientboundExplodePacket; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.MinecraftServer; import net.minecraft.server.bossevents.CustomBossEvents; import net.minecraft.server.level.ServerChunkCache; @@ -48,13 +47,24 @@ import net.minecraft.server.players.PlayerList; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.Util; import net.minecraft.util.random.WeightedList; +import net.minecraft.world.DifficultyInstance; import net.minecraft.world.RandomSequences; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntitySpawnReason; +import net.minecraft.world.entity.LightningBolt; +import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.ai.village.poi.PoiManager; import net.minecraft.world.entity.ai.village.poi.PoiRecord; import net.minecraft.world.entity.ai.village.poi.PoiType; +import net.minecraft.world.entity.decoration.ArmorStand; +import net.minecraft.world.entity.decoration.HangingEntity; +import net.minecraft.world.entity.decoration.painting.Painting; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrownEnderpearl; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import net.minecraft.world.level.CustomSpawner; import net.minecraft.world.level.Level; import net.minecraft.world.level.ServerExplosion; @@ -85,6 +95,8 @@ import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.Transaction; import org.spongepowered.api.effect.sound.music.MusicDisc; +import org.spongepowered.api.entity.EntityType; +import org.spongepowered.api.entity.projectile.EnderPearl; import org.spongepowered.api.event.Cause; import org.spongepowered.api.event.CauseStackManager; import org.spongepowered.api.event.EventContextKeys; @@ -108,6 +120,8 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.LocalCapture; import org.spongepowered.common.SpongeCommon; +import org.spongepowered.common.accessor.world.entity.MobAccessor; +import org.spongepowered.common.accessor.world.entity.item.FallingBlockEntityAccessor; import org.spongepowered.common.block.SpongeBlockSnapshot; import org.spongepowered.common.bridge.data.VanishableBridge; import org.spongepowered.common.bridge.server.level.ServerLevelBridge; @@ -118,6 +132,7 @@ import org.spongepowered.common.bridge.world.level.storage.ServerLevelDataBridge; import org.spongepowered.common.bridge.world.ticks.LevelTicksBridge; import org.spongepowered.common.config.SpongeGameConfigs; +import org.spongepowered.common.entity.projectile.UnknownProjectileSource; import org.spongepowered.common.event.ShouldFire; import org.spongepowered.common.event.SpongeCommonEventFactory; import org.spongepowered.common.event.tracking.PhaseContext; @@ -129,6 +144,7 @@ import org.spongepowered.common.util.Constants; import org.spongepowered.common.util.SpongeTicks; import org.spongepowered.common.world.server.SpongeServerLevelData; +import org.spongepowered.math.vector.Vector3d; import org.spongepowered.math.vector.Vector3i; import java.util.List; @@ -153,6 +169,7 @@ public abstract class ServerLevelMixin extends LevelMixin implements ServerLevel @Shadow @Nullable private EndDragonFight dragonFight; @Shadow @Final List players; + @Shadow public abstract DifficultyInstance shadow$getCurrentDifficultyAt(BlockPos p_175649_1_); // @formatter:on @@ -292,7 +309,7 @@ public abstract class ServerLevelMixin extends LevelMixin implements ServerLevel ParticleOptions particleData = new BlockParticleOption(ParticleTypes.BLOCK, Blocks.AIR.defaultBlockState()); // "no" particle particleData = packet.explosionParticle(); // TODO control sound in API - var soundEvent = Holder.direct(new SoundEvent(ResourceLocation.parse("sponge:none"), Optional.of(0f))); // "no" sound + var soundEvent = Holder.direct(new SoundEvent(Identifier.parse("sponge:none"), Optional.of(0f))); // "no" sound soundEvent = packet.explosionSound(); // TODO apiExplosion.shouldPlaySmoke() is not initialized correctly var newPacket = new ClientboundExplodePacket(packet.center(), packet.radius(), packet.blockCount(), packet.playerKnockback(), particleData, soundEvent, packet.blockParticles()); @@ -567,4 +584,74 @@ public String toString() { // Weather is per world in Sponge. instance.broadcastAll(packet, this.shadow$dimension()); } + + + @Override + @SuppressWarnings("unchecked") + public E bridge$createEntity(final EntityType type, final Vector3d position, final boolean naturally) throws IllegalArgumentException, IllegalStateException { + if (type == net.minecraft.world.entity.EntityType.PLAYER) { + // Unable to construct these + throw new IllegalArgumentException("A Player cannot be created by the API!"); + } + + net.minecraft.world.entity.Entity entity = null; + final double x = position.x(); + final double y = position.y(); + final double z = position.z(); + final net.minecraft.world.level.Level thisWorld = (net.minecraft.world.level.Level) (Object) this; + // Not all entities have a single World parameter as their constructor + if (type == net.minecraft.world.entity.EntityType.LIGHTNING_BOLT) { + entity = net.minecraft.world.entity.EntityType.LIGHTNING_BOLT.create(thisWorld, EntitySpawnReason.EVENT); + entity.snapTo(x, y, z); + ((LightningBolt) entity).setVisualOnly(false); + } + // TODO - archetypes should solve the problem of calling the correct constructor + if (type == net.minecraft.world.entity.EntityType.ENDER_PEARL) { + final ArmorStand tempEntity = new ArmorStand(thisWorld, x, y, z); + tempEntity.setPos(tempEntity.getX(), tempEntity.getY() - tempEntity.getEyeHeight(), tempEntity.getZ()); + entity = new ThrownEnderpearl(thisWorld, tempEntity, Items.ENDER_PEARL.getDefaultInstance()); + ((EnderPearl) entity).offer(Keys.SHOOTER, UnknownProjectileSource.UNKNOWN); + } + // Some entities need to have non-null fields (and the easiest way to + // set them is to use the more specialised constructor). + if (type == net.minecraft.world.entity.EntityType.FALLING_BLOCK) { + entity = FallingBlockEntityAccessor.invoker$new(thisWorld, x, y, z, Blocks.SAND.defaultBlockState()); + } + if (type == net.minecraft.world.entity.EntityType.ITEM) { + entity = new ItemEntity(thisWorld, x, y, z, new ItemStack(Blocks.STONE)); + } + + if (entity == null) { + final ResourceKey key = (ResourceKey) (Object) SpongeCommon.vanillaRegistry(Registries.ENTITY_TYPE).getKey((net.minecraft.world.entity.EntityType) type); + try { + entity = ((net.minecraft.world.entity.EntityType) type).create(thisWorld, EntitySpawnReason.EVENT); + entity.snapTo(x, y, z); + } catch (final Exception e) { + throw new RuntimeException("There was an issue attempting to construct " + key, e); + } + } + + // TODO - replace this with an actual check + + if (entity instanceof HangingEntity) { + if (!((HangingEntity) entity).survives()) { + throw new IllegalArgumentException("Hanging entity does not survive at the given position: " + position); + } + } + + if (naturally && entity instanceof Mob) { + // Adding the default equipment + final DifficultyInstance difficulty = this.shadow$getCurrentDifficultyAt(new BlockPos((int) x, (int) y, (int) z)); + ((MobAccessor) entity).invoker$populateDefaultEquipmentSlots(this.random, difficulty); + } + + if (entity instanceof Painting) { + // This is default when art is null when reading from NBT, could + // choose a random art instead? + // TODO ? ((Painting) entity).motive = Motive.KEBAB; + } + + return (E) entity; + } + } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ServerPlayerMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ServerPlayerMixin.java index 5a59cd82d78..904ddf9309d 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ServerPlayerMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ServerPlayerMixin.java @@ -61,14 +61,14 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.Relative; -import net.minecraft.world.entity.animal.AbstractFish; +import net.minecraft.world.entity.animal.fish.AbstractFish; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import net.minecraft.world.level.GameRules; import net.minecraft.world.level.GameType; import net.minecraft.world.level.Level; import net.minecraft.world.level.border.WorldBorder; +import net.minecraft.world.level.gamerules.GameRules; import net.minecraft.world.level.portal.TeleportTransition; import net.minecraft.world.scores.PlayerTeam; import org.checkerframework.checker.nullness.qual.Nullable; @@ -295,7 +295,7 @@ public abstract class ServerPlayerMixin extends PlayerMixin implements SubjectBr @Override public boolean bridge$keepInventory() { - return Objects.requireNonNullElseGet(this.impl$keepInventory, () -> this.shadow$level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY)); + return Objects.requireNonNullElseGet(this.impl$keepInventory, () -> this.shadow$level().getGameRules().get(GameRules.KEEP_INVENTORY)); } @Override @@ -450,19 +450,19 @@ public abstract class ServerPlayerMixin extends PlayerMixin implements SubjectBr @ModifyExpressionValue( method = "die", at = @At( - value = "INVOKE", target = "Lnet/minecraft/world/level/GameRules;getBoolean(Lnet/minecraft/world/level/GameRules$Key;)Z" + value = "INVOKE", target = "Lnet/minecraft/world/level/gamerules/GameRules;get(Lnet/minecraft/world/level/gamerules/GameRule;)Ljava/lang/Object;" ), slice = @Slice( from = @At("HEAD"), to = @At(value = "INVOKE", target = "Lnet/minecraft/world/damagesource/CombatTracker;getDeathMessage()Lnet/minecraft/network/chat/Component;") ) ) - private boolean impl$onlySendMessageIfEventCallsForIt( - boolean gameRules, + private Object impl$onlySendMessageIfEventCallsForIt( + Object gameRules, @Share("sponge-event") LocalRef event ) { final var spongeEvent = event.get(); - return gameRules && (spongeEvent == null || !spongeEvent.isMessageCancelled()); + return (Boolean) gameRules && (spongeEvent == null || !spongeEvent.isMessageCancelled()); } @ModifyExpressionValue( @@ -526,10 +526,10 @@ public abstract class ServerPlayerMixin extends PlayerMixin implements SubjectBr @ModifyExpressionValue( method = "restoreFrom", - at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/GameRules;getBoolean(Lnet/minecraft/world/level/GameRules$Key;)Z") + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/gamerules/GameRules;get(Lnet/minecraft/world/level/gamerules/GameRule;)Ljava/lang/Object;") ) - private boolean tracker$useKeepFromBridge( - boolean original, + private Object tracker$useKeepFromBridge( + Object original, net.minecraft.server.level.ServerPlayer corpse, boolean wonGame ) { @@ -668,29 +668,21 @@ public void sendMessage(final OutgoingChatMessage $$0, final boolean $$1, final @Inject(method = "startSleepInBed", at = @At(value = "RETURN"), cancellable = true) private void impl$onReturnSleep(final BlockPos param0, final CallbackInfoReturnable> cir) { final Either returnValue = cir.getReturnValue(); - if (returnValue.left().isPresent()) { - switch (returnValue.left().get()) { - - case NOT_POSSIBLE_HERE: - case TOO_FAR_AWAY: - case NOT_POSSIBLE_NOW: - case OBSTRUCTED: - case NOT_SAFE: - final Cause currentCause = PhaseTracker.getInstance().currentCause(); - final BlockSnapshot snapshot = ((ServerWorld) this.shadow$level()).createSnapshot(param0.getX(), param0.getY(), param0.getZ()); - if (Sponge.eventManager().post(SpongeEventFactory.createSleepingEventFailed(currentCause, snapshot, (Living) this))) { - final Either var5 = super.shadow$startSleepInBed(param0).ifRight((param0x) -> { - this.shadow$awardStat(Stats.SLEEP_IN_BED); - CriteriaTriggers.SLEPT_IN_BED.trigger((net.minecraft.server.level.ServerPlayer) (Object) this); - }); - ((ServerLevel) this.shadow$level()).updateSleepingPlayerList(); - cir.setReturnValue(var5); - } - break; - case OTHER_PROBLEM: // ignore - break; + returnValue.ifLeft(problem -> { + if (problem.message() == null) { + return; } - } + final Cause currentCause = PhaseTracker.getInstance().currentCause(); + final BlockSnapshot snapshot = ((ServerWorld) this.shadow$level()).createSnapshot(param0.getX(), param0.getY(), param0.getZ()); + if (Sponge.eventManager().post(SpongeEventFactory.createSleepingEventFailed(currentCause, snapshot, (Living) this))) { + final Either var5 = super.shadow$startSleepInBed(param0).ifRight((param0x) -> { + this.shadow$awardStat(Stats.SLEEP_IN_BED); + CriteriaTriggers.SLEPT_IN_BED.trigger((net.minecraft.server.level.ServerPlayer) (Object) this); + }); + ((ServerLevel) this.shadow$level()).updateSleepingPlayerList(); + cir.setReturnValue(var5); + } + }); } @Override @@ -813,4 +805,15 @@ private boolean isPvpAllowed() { private boolean impl$skipUnserializableRootVehicle(final Entity instance) { return instance.hasExactlyOnePlayerPassenger() && !((TransientBridge) instance).bridge$isTransient(); } + + /** + * Fixes MC-302672 + */ + @WrapOperation(method = "onEffectAdded", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerGamePacketListenerImpl;send(Lnet/minecraft/network/protocol/Packet;)V")) + private void impl$onEffectAdded(ServerGamePacketListenerImpl instance, Packet packet, Operation original) { + if (instance == null) { + return; + } + original.call(instance, packet); + } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/server/network/ServerGamePacketListenerImplMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/server/network/ServerGamePacketListenerImplMixin.java index 90495ff6d64..e44213cb7bf 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/server/network/ServerGamePacketListenerImplMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/server/network/ServerGamePacketListenerImplMixin.java @@ -211,7 +211,7 @@ public abstract class ServerGamePacketListenerImplMixin extends ServerCommonPack cancellable = true, slice = @Slice( // TODO - confirm we are injecting at the right spot given the subtle changes - from = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerPlayer;hasClientLoaded()Z"), + from = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerGamePacketListenerImpl;hasClientLoaded()Z"), to = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerGamePacketListenerImpl;updateAwaitingTeleport()Z"))) private void impl$callMoveEntityEvent(final ServerboundMovePlayerPacket packetIn, final CallbackInfo ci) { final boolean fireMoveEvent = packetIn.hasPosition(); @@ -423,7 +423,7 @@ public abstract class ServerGamePacketListenerImplMixin extends ServerCommonPack } } - @Inject(method = "handlePlayerAction", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerPlayer;drop(Z)Z")) + @Inject(method = "handlePlayerAction", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerPlayer;drop(Z)V")) public void impl$dropItem(final ServerboundPlayerActionPacket p_147345_1_, final CallbackInfo ci) { this.impl$ignorePackets++; } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/server/players/PlayerListMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/server/players/PlayerListMixin.java index 24fa09a364c..cbe81f39195 100755 --- a/src/mixins/java/org/spongepowered/common/mixin/core/server/players/PlayerListMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/server/players/PlayerListMixin.java @@ -46,8 +46,8 @@ import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.common.ClientboundDisconnectPacket; import net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket; +import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.server.ServerScoreboard; import net.minecraft.server.bossevents.CustomBossEvents; @@ -605,7 +605,7 @@ public abstract class PlayerListMixin implements PlayerListBridge { return; } - boundChatType = ChatType.bind(ResourceKey.create(Registries.CHAT_TYPE, (ResourceLocation) (Object) event.chatType().location()), + boundChatType = ChatType.bind(ResourceKey.create(Registries.CHAT_TYPE, (Identifier) (Object) event.chatType().location()), this.server.registryAccess(), SpongeAdventure.asVanilla(event.sender())); if (event.target().isPresent()) { diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/service/permission/SubjectMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/service/permission/SubjectMixin.java index cf03857795d..111c2e8f0bb 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/service/permission/SubjectMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/service/permission/SubjectMixin.java @@ -26,7 +26,7 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.rcon.RconConsoleSource; -import net.minecraft.world.entity.vehicle.MinecartCommandBlock; +import net.minecraft.world.entity.vehicle.minecart.MinecartCommandBlock; import net.minecraft.world.level.block.entity.CommandBlockEntity; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.service.permission.Subject; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/tags/TagLoaderMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/tags/TagLoaderMixin.java index 4950eca4a53..51d2af3fda0 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/tags/TagLoaderMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/tags/TagLoaderMixin.java @@ -30,7 +30,7 @@ import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; import net.minecraft.core.WritableRegistry; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.tags.TagEntry; import net.minecraft.tags.TagLoader; @@ -69,20 +69,20 @@ public abstract class TagLoaderMixin implements TagLoaderBridge { private @MonotonicNonNull RegistryType impl$registryType; private @MonotonicNonNull Map> impl$modifiers; - private ResourceLocation impl$buildingTagKey; + private Identifier impl$buildingTagKey; @SuppressWarnings({"unchecked", "rawtypes"}) @Inject(method = "load", at = @At("TAIL")) - private void impl$onLoad(final ResourceManager $$0, final CallbackInfoReturnable>> cir) { + private void impl$onLoad(final ResourceManager $$0, final CallbackInfoReturnable>> cir) { final SpongePluginTags tags = ((ResourceManagerBridge) $$0).bridge$pluginProvidedTags(); tags.get(this.impl$registryType).ifPresent(m -> { this.impl$modifiers = (Map) m; m.forEach((tagKey, modifiers) -> { - final List entries = cir.getReturnValue().computeIfAbsent((ResourceLocation) (Object) tagKey, $ -> new ArrayList<>()); + final List entries = cir.getReturnValue().computeIfAbsent((Identifier) (Object) tagKey, $ -> new ArrayList<>()); modifiers.append().forEach((k, v) -> { final TagLoader.EntryWithSource entry = new TagLoader.EntryWithSource(k.tag() - ? TagEntry.optionalTag((ResourceLocation) (Object) k.key()) - : TagEntry.optionalElement((ResourceLocation) (Object) k.key()), "sponge"); + ? TagEntry.optionalTag((Identifier) (Object) k.key()) + : TagEntry.optionalElement((Identifier) (Object) k.key()), "sponge"); ((TagLoader_EntryWithSourceBridge) (Object) entry).bridge$predicates((Set) v); entries.add(entry); }); @@ -126,7 +126,7 @@ public abstract class TagLoaderMixin implements TagLoaderBridge { final Tag tag = Tag.of(this.impl$registryType, (ResourceKey) (Object) ((TagEntryAccessor) e.entry()).accessor$id()); for (final T value : values) { - final ResourceKey key = (ResourceKey) (Object) ((Holder.Reference) value).key().location(); + final ResourceKey key = (ResourceKey) (Object) ((Holder.Reference) value).key().identifier(); final DefaultedRegistryReference reference = RegistryKey.of(this.impl$registryType, key).asDefaultedReference(Sponge::game); for (final SpongePluginTagPredicate predicate : filters) { if (predicate.apply(reference, tag) == Tristate.TRUE) { @@ -148,7 +148,7 @@ public abstract class TagLoaderMixin implements TagLoaderBridge { } else if (((TagEntryAccessor) instance).accessor$tag()) { final Tag tag = Tag.of(this.impl$registryType, (ResourceKey) (Object) ((TagEntryAccessor) instance).accessor$id()); return original.accept(instance, lookup, i -> { - final ResourceKey key = (ResourceKey) (Object) ((Holder.Reference) i).key().location(); + final ResourceKey key = (ResourceKey) (Object) ((Holder.Reference) i).key().identifier(); final DefaultedRegistryReference reference = RegistryKey.of(this.impl$registryType, key).asDefaultedReference(Sponge::game); for (final SpongePluginTagPredicate predicate : modifier.filters()) { if (predicate.apply(reference, tag) == Tristate.FALSE) { @@ -208,11 +208,11 @@ public abstract class TagLoaderMixin implements TagLoaderBridge { @Override public void bridge$registryKey(final net.minecraft.resources.ResourceKey> registryKey) { this.impl$registryType = - RegistryType.of((ResourceKey) (Object) registryKey.registry(), (ResourceKey) (Object) registryKey.location()); + RegistryType.of((ResourceKey) (Object) registryKey.registry(), (ResourceKey) (Object) registryKey.identifier()); } @Override - public void bridge$buildingTagKey(final @Nullable ResourceLocation key) { + public void bridge$buildingTagKey(final @Nullable Identifier key) { this.impl$buildingTagKey = key; } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/BaseCommandBlockMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/BaseCommandBlockMixin.java index bc577d37306..105a33efbe6 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/BaseCommandBlockMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/BaseCommandBlockMixin.java @@ -25,17 +25,12 @@ package org.spongepowered.common.mixin.core.world; import net.kyori.adventure.audience.Audience; -import net.kyori.adventure.audience.MessageType; -import net.kyori.adventure.identity.Identity; -import net.kyori.adventure.text.Component; import net.minecraft.commands.CommandSource; import net.minecraft.commands.CommandSourceStack; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.BaseCommandBlock; -import org.checkerframework.checker.nullness.qual.NonNull; -import org.spongepowered.api.event.Cause; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.common.adventure.SpongeAdventure; import org.spongepowered.common.bridge.commands.CommandSourceProviderBridge; import javax.annotation.Nullable; @@ -44,24 +39,8 @@ public abstract class BaseCommandBlockMixin implements CommandSourceProviderBridge, Audience { // @formatter:off - @Shadow public abstract CommandSourceStack createCommandSourceStack(CommandSource var1); - @Shadow @Nullable protected abstract BaseCommandBlock.CloseableCommandBlockSource shadow$createSource(); + @Shadow public abstract CommandSourceStack createCommandSourceStack(ServerLevel level, CommandSource var1); + @Shadow @Nullable protected abstract BaseCommandBlock.CloseableCommandBlockSource shadow$createSource(ServerLevel level); // @formatter:on - - - @Override - public CommandSourceStack bridge$getCommandSource(final Cause cause) { - return this.createCommandSourceStack(this.shadow$createSource()); - } - - @Override - @SuppressWarnings({"deprecation", "UnstableApiUsage"}) - public void sendMessage(final @NonNull Identity identity, final @NonNull Component message, final @NonNull MessageType type) { - final var source = this.shadow$createSource(); - if (source == null) { - return; - } - source.sendSystemMessage(SpongeAdventure.asVanilla(message)); - } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/EntityMaxAirMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/EntityMaxAirMixin.java index 2a8f7da99c2..8fc76c652fb 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/EntityMaxAirMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/EntityMaxAirMixin.java @@ -25,7 +25,7 @@ package org.spongepowered.common.mixin.core.world.entity; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.animal.Dolphin; +import net.minecraft.world.entity.animal.dolphin.Dolphin; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.data.Keys; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/GrieferBridgeMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/GrieferBridgeMixin.java index 023be957be2..45d6df44d5c 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/GrieferBridgeMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/GrieferBridgeMixin.java @@ -25,9 +25,9 @@ package org.spongepowered.common.mixin.core.world.entity; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.projectile.LargeFireball; -import net.minecraft.world.entity.projectile.SmallFireball; -import net.minecraft.world.entity.projectile.WitherSkull; +import net.minecraft.world.entity.projectile.hurtingprojectile.LargeFireball; +import net.minecraft.world.entity.projectile.hurtingprojectile.SmallFireball; +import net.minecraft.world.entity.projectile.hurtingprojectile.WitherSkull; import org.spongepowered.api.data.Keys; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.common.bridge.data.SpongeDataHolderBridge; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/LivingEntityMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/LivingEntityMixin.java index 75b665d9049..86ef29443ac 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/LivingEntityMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/LivingEntityMixin.java @@ -26,6 +26,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.llamalad7.mixinextras.sugar.Local; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.core.particles.ParticleOptions; @@ -68,7 +69,6 @@ import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; import org.spongepowered.common.SpongeCommon; import org.spongepowered.common.bridge.data.VanishableBridge; import org.spongepowered.common.bridge.world.entity.LivingEntityBridge; @@ -274,10 +274,11 @@ public abstract class LivingEntityMixin extends EntityMixin implements LivingEnt @Inject(method = "startUsingItem", cancellable = true, - locals = LocalCapture.CAPTURE_FAILHARD, at = @At(value = "FIELD", - target = "Lnet/minecraft/world/entity/LivingEntity;useItem:Lnet/minecraft/world/item/ItemStack;")) - private void impl$onSetActiveItemStack(final InteractionHand hand, final CallbackInfo ci, final ItemStack stack) { + target = "Lnet/minecraft/world/entity/LivingEntity;useItem:Lnet/minecraft/world/item/ItemStack;", + opcode = Opcodes.PUTFIELD + )) + private void impl$onSetActiveItemStack(final InteractionHand hand, final CallbackInfo ci, final @Local ItemStack stack) { if (this.shadow$level().isClientSide()) { return; } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/LivingEntityMixin_Damage.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/LivingEntityMixin_Damage.java index f5f25bf49ef..fc5ba2de9ca 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/LivingEntityMixin_Damage.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/LivingEntityMixin_Damage.java @@ -220,7 +220,7 @@ public abstract class LivingEntityMixin_Damage extends EntityMixin implements Li @ModifyVariable(method = "getDamageAfterMagicAbsorb", at = @At("STORE"), argsOnly = true, slice = @Slice( from = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;getEffect(Lnet/minecraft/core/Holder;)Lnet/minecraft/world/effect/MobEffectInstance;"), - to = @At(value = "FIELD", target = "Lnet/minecraft/stats/Stats;DAMAGE_RESISTED:Lnet/minecraft/resources/ResourceLocation;"))) + to = @At(value = "FIELD", target = "Lnet/minecraft/stats/Stats;DAMAGE_RESISTED:Lnet/minecraft/resources/Identifier;"))) private float damage$modifyAfterDefensivePotionEffect(final float damage) { final SpongeDamageTracker tracker = this.damage$tracker(); return tracker == null ? damage : tracker.endStep(DamageStepTypes.DEFENSIVE_POTION_EFFECT, damage); diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/LivingEntityMixin_Shared_Damage.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/LivingEntityMixin_Shared_Damage.java index a37119cd297..0b4c0cde3e3 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/LivingEntityMixin_Shared_Damage.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/LivingEntityMixin_Shared_Damage.java @@ -25,7 +25,7 @@ package org.spongepowered.common.mixin.core.world.entity; import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.LivingEntity; import org.spongepowered.api.event.cause.entity.damage.DamageStepTypes; @@ -65,8 +65,8 @@ public abstract class LivingEntityMixin_Shared_Damage implements TrackedDamageBr return tracker == null || !tracker.isSkipped(DamageStepTypes.ABSORPTION); } - @WrapWithCondition(method = "actuallyHurt", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerPlayer;awardStat(Lnet/minecraft/resources/ResourceLocation;I)V")) - private boolean damage$skipAbsorptionStat(final ServerPlayer self, final ResourceLocation stat, final int amount) { + @WrapWithCondition(method = "actuallyHurt", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerPlayer;awardStat(Lnet/minecraft/resources/Identifier;I)V")) + private boolean damage$skipAbsorptionStat(final ServerPlayer self, final Identifier stat, final int amount) { final SpongeDamageTracker tracker = this.damage$tracker(); return tracker == null || !tracker.isSkipped(DamageStepTypes.ABSORPTION); } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/ai/behavior/HarvestFarmlandMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/ai/behavior/HarvestFarmlandMixin.java index 93b201f05d6..18883133a52 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/ai/behavior/HarvestFarmlandMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/ai/behavior/HarvestFarmlandMixin.java @@ -26,7 +26,7 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.ai.behavior.HarvestFarmland; -import net.minecraft.world.entity.npc.Villager; +import net.minecraft.world.entity.npc.villager.Villager; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -42,7 +42,7 @@ public abstract class HarvestFarmlandMixin { * would fail in forge environments. This changes the injection to a predictable * place where we still can forcibly call things but still cancel as needed. */ - @Inject(method = "canStillUse(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/npc/Villager;J)Z", at = @At(value = "HEAD"), cancellable = true) + @Inject(method = "canStillUse(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/npc/villager/Villager;J)Z", at = @At(value = "HEAD"), cancellable = true) private void onCanGrief(ServerLevel level, Villager owner, long $$2, CallbackInfoReturnable cir) { if (!((GrieferBridge) owner).bridge$canGrief()) { cir.setReturnValue(false); diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/ai/goal/RunAroundLikeCrazyGoalMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/ai/goal/RunAroundLikeCrazyGoalMixin.java index 46eab5028f0..beef75b6dc5 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/ai/goal/RunAroundLikeCrazyGoalMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/ai/goal/RunAroundLikeCrazyGoalMixin.java @@ -25,7 +25,7 @@ package org.spongepowered.common.mixin.core.world.entity.ai.goal; import net.minecraft.world.entity.ai.goal.RunAroundLikeCrazyGoal; -import net.minecraft.world.entity.animal.horse.AbstractHorse; +import net.minecraft.world.entity.animal.equine.AbstractHorse; import org.spongepowered.api.entity.living.animal.horse.HorseLike; import org.spongepowered.api.event.CauseStackManager; import org.spongepowered.api.event.SpongeEventFactory; @@ -51,7 +51,7 @@ public abstract class RunAroundLikeCrazyGoalMixin extends GoalMixin { method = "tick", at = @At( value = "INVOKE", - target = "Lnet/minecraft/world/entity/animal/horse/AbstractHorse;tameWithName(Lnet/minecraft/world/entity/player/Player;)Z" + target = "Lnet/minecraft/world/entity/animal/equine/AbstractHorse;tameWithName(Lnet/minecraft/world/entity/player/Player;)Z" ), cancellable = true ) @@ -68,7 +68,7 @@ public abstract class RunAroundLikeCrazyGoalMixin extends GoalMixin { method = "tick", at = @At( value = "INVOKE", - target = "Lnet/minecraft/world/entity/animal/horse/AbstractHorse;ejectPassengers()V" + target = "Lnet/minecraft/world/entity/animal/equine/AbstractHorse;ejectPassengers()V" ), cancellable = true ) diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/horse/AbstractHorseMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/equine/AbstractHorseMixin.java similarity index 97% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/horse/AbstractHorseMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/equine/AbstractHorseMixin.java index c223d6299b1..95ee43bfccc 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/horse/AbstractHorseMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/equine/AbstractHorseMixin.java @@ -22,11 +22,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.animal.horse; +package org.spongepowered.common.mixin.core.world.entity.animal.equine; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.entity.animal.horse.AbstractHorse; +import net.minecraft.world.entity.animal.equine.AbstractHorse; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/Cat_CatRelaxOnOwnerGoalMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/feline/Cat_CatRelaxOnOwnerGoalMixin.java similarity index 86% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/Cat_CatRelaxOnOwnerGoalMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/feline/Cat_CatRelaxOnOwnerGoalMixin.java index f4181d3b388..8d45ca231e6 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/Cat_CatRelaxOnOwnerGoalMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/feline/Cat_CatRelaxOnOwnerGoalMixin.java @@ -22,22 +22,22 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.animal; +package org.spongepowered.common.mixin.core.world.entity.animal.feline; -import net.minecraft.world.entity.animal.Cat; +import net.minecraft.world.entity.animal.feline.Cat; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(targets = "net/minecraft/world/entity/animal/Cat$CatRelaxOnOwnerGoal") +@Mixin(targets = "net/minecraft/world/entity/animal/feline/Cat$CatRelaxOnOwnerGoal") public abstract class Cat_CatRelaxOnOwnerGoalMixin { private boolean impl$teleportResult; @Redirect(method = "giveMorningGift()V", - at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/animal/Cat;randomTeleport(DDDZ)Z")) + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/animal/feline/Cat;randomTeleport(DDDZ)Z")) private boolean impl$storeTeleportResult(Cat entity, double x, double y, double z, boolean changeState) { this.impl$teleportResult = entity.randomTeleport(x, y, z, changeState); return this.impl$teleportResult; @@ -45,7 +45,7 @@ public abstract class Cat_CatRelaxOnOwnerGoalMixin { @Inject(method = "giveMorningGift()V", at = @At(value = "INVOKE_ASSIGN", - target = "Lnet/minecraft/world/entity/animal/Cat;randomTeleport(DDDZ)Z", + target = "Lnet/minecraft/world/entity/animal/feline/Cat;randomTeleport(DDDZ)Z", shift = At.Shift.AFTER), cancellable = true) private void impl$makeCatsRespectTeleportResult(final CallbackInfo ci) { diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/OcelotMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/feline/OcelotMixin.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/OcelotMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/feline/OcelotMixin.java index 6ac10940bc5..ed1788b7a36 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/OcelotMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/feline/OcelotMixin.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.animal; +package org.spongepowered.common.mixin.core.world.entity.animal.feline; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; @@ -38,7 +38,7 @@ import org.spongepowered.common.event.tracking.PhaseTracker; import org.spongepowered.common.mixin.core.world.entity.AgableMobMixin; -@Mixin(net.minecraft.world.entity.animal.Ocelot.class) +@Mixin(net.minecraft.world.entity.animal.feline.Ocelot.class) public abstract class OcelotMixin extends AgableMobMixin { @Redirect(method = "mobInteract", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/RandomSource;nextInt(I)I")) diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/PufferfishMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/fish/PufferfishMixin.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/PufferfishMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/fish/PufferfishMixin.java index 69bdc94b064..7cd65a66812 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/PufferfishMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/fish/PufferfishMixin.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.animal; +package org.spongepowered.common.mixin.core.world.entity.animal.fish; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; @@ -30,7 +30,7 @@ import net.minecraft.tags.TagKey; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.animal.Pufferfish; +import net.minecraft.world.entity.animal.fish.Pufferfish; import net.minecraft.world.entity.player.Player; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/ParrotMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/parrot/ParrotMixin.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/ParrotMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/parrot/ParrotMixin.java index ba87ad79146..38dd761cfa7 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/ParrotMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/parrot/ParrotMixin.java @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.animal; +package org.spongepowered.common.mixin.core.world.entity.animal.parrot; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; @@ -38,7 +38,7 @@ import org.spongepowered.common.event.tracking.PhaseTracker; import org.spongepowered.common.mixin.core.world.entity.AgableMobMixin; -@Mixin(net.minecraft.world.entity.animal.Parrot.class) +@Mixin(net.minecraft.world.entity.animal.parrot.Parrot.class) public abstract class ParrotMixin extends AgableMobMixin { @Redirect(method = "mobInteract", diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/Rabbit_RaidGardenGoalMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/rabbit/Rabbit_RaidGardenGoalMixin.java similarity index 92% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/Rabbit_RaidGardenGoalMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/rabbit/Rabbit_RaidGardenGoalMixin.java index de97d0704e0..8f8cbe8ff08 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/Rabbit_RaidGardenGoalMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/animal/rabbit/Rabbit_RaidGardenGoalMixin.java @@ -22,11 +22,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.animal; +package org.spongepowered.common.mixin.core.world.entity.animal.rabbit; import net.minecraft.world.entity.PathfinderMob; import net.minecraft.world.entity.ai.goal.MoveToBlockGoal; -import net.minecraft.world.entity.animal.Rabbit; +import net.minecraft.world.entity.animal.rabbit.Rabbit; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -35,7 +35,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.common.bridge.world.entity.GrieferBridge; -@Mixin(targets = "net/minecraft/world/entity/animal/Rabbit$RaidGardenGoal") +@Mixin(targets = "net/minecraft/world/entity/animal/rabbit/Rabbit$RaidGardenGoal") public abstract class Rabbit_RaidGardenGoalMixin extends MoveToBlockGoal { // @formatter:off diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/boss/enderdragon/EnderDragonMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/boss/enderdragon/EnderDragonMixin.java index 3661568aab3..b8374b0db17 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/boss/enderdragon/EnderDragonMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/boss/enderdragon/EnderDragonMixin.java @@ -58,7 +58,7 @@ public abstract class EnderDragonMixin extends MobMixin { slice = @Slice( from = @At( value = "FIELD", - target = "Lnet/minecraft/world/level/GameRules;RULE_MOBGRIEFING:Lnet/minecraft/world/level/GameRules$Key;" + target = "Lnet/minecraft/world/level/gamerules/GameRules;MOB_GRIEFING:Lnet/minecraft/world/level/gamerules/GameRule;" ), to = @At( value = "INVOKE", diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/monster/ZombifiedPiglinMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/monster/zombie/ZombifiedPiglinMixin.java similarity index 85% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/monster/ZombifiedPiglinMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/monster/zombie/ZombifiedPiglinMixin.java index 35a889a05ac..4f617112c41 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/monster/ZombifiedPiglinMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/monster/zombie/ZombifiedPiglinMixin.java @@ -22,19 +22,20 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.monster; +package org.spongepowered.common.mixin.core.world.entity.monster.zombie; import net.minecraft.world.entity.NeutralMob; -import net.minecraft.world.entity.monster.ZombifiedPiglin; +import net.minecraft.world.entity.monster.zombie.ZombifiedPiglin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.common.bridge.world.entity.AggressiveEntityBridge; +import org.spongepowered.common.mixin.core.world.entity.monster.MonsterMixin; @Mixin(ZombifiedPiglin.class) public abstract class ZombifiedPiglinMixin extends MonsterMixin implements AggressiveEntityBridge { // @formatter:off - @Shadow private int remainingPersistentAngerTime; + @Shadow private long persistentAngerEndTime; // @formatter:on @Override @@ -45,9 +46,9 @@ public abstract class ZombifiedPiglinMixin extends MonsterMixin implements Aggre @Override public void bridge$setAngry(boolean angry) { if (angry) { - this.remainingPersistentAngerTime = 400 + this.random.nextInt(400); + this.persistentAngerEndTime = 400 + this.random.nextInt(400); } else { - this.remainingPersistentAngerTime = 0; + this.persistentAngerEndTime = 0; } } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/npc/AbstractVillagerMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/npc/villager/AbstractVillagerMixin.java similarity index 91% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/npc/AbstractVillagerMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/npc/villager/AbstractVillagerMixin.java index 9bd38e94a91..ecfd4220a5a 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/npc/AbstractVillagerMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/npc/villager/AbstractVillagerMixin.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.npc; +package org.spongepowered.common.mixin.core.world.entity.npc.villager; -import net.minecraft.world.entity.npc.AbstractVillager; +import net.minecraft.world.entity.npc.villager.AbstractVillager; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.common.mixin.core.world.entity.AgableMobMixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/npc/VillagerMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/npc/villager/VillagerMixin.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/npc/VillagerMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/npc/villager/VillagerMixin.java index e34c6aeeabe..eb5d8f41915 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/npc/VillagerMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/npc/villager/VillagerMixin.java @@ -22,10 +22,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.npc; +package org.spongepowered.common.mixin.core.world.entity.npc.villager; import net.minecraft.core.BlockPos; -import net.minecraft.world.entity.npc.Villager; +import net.minecraft.world.entity.npc.villager.Villager; import org.slf4j.Logger; import org.spongepowered.api.Sponge; import org.spongepowered.api.block.BlockSnapshot; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/npc/WanderingTraderMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/npc/wanderingtrader/WanderingTraderMixin.java similarity index 93% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/npc/WanderingTraderMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/npc/wanderingtrader/WanderingTraderMixin.java index 251de521ef6..c8afe7fcfbf 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/npc/WanderingTraderMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/npc/wanderingtrader/WanderingTraderMixin.java @@ -22,10 +22,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.npc; +package org.spongepowered.common.mixin.core.world.entity.npc.wanderingtrader; import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.entity.npc.WanderingTraderSpawner; +import net.minecraft.world.entity.npc.wanderingtrader.WanderingTraderSpawner; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/player/PlayerMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/player/PlayerMixin.java index 10012b627b8..8af4121ddf0 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/player/PlayerMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/player/PlayerMixin.java @@ -29,8 +29,9 @@ import net.kyori.adventure.bossbar.BossBar; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.permissions.PermissionSet; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; import net.minecraft.util.Unit; @@ -38,6 +39,7 @@ import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player.BedSleepingProblem; import net.minecraft.world.food.FoodData; import net.minecraft.world.inventory.AbstractContainerMenu; @@ -95,18 +97,19 @@ public abstract class PlayerMixin extends AvatarMixin implements PlayerBridge, G @Shadow @Final public InventoryMenu inventoryMenu; @Shadow @Final @Mutable private GameProfile gameProfile; @Shadow public abstract boolean shadow$isSpectator(); - @Shadow protected abstract int shadow$getPermissionLevel(); @Shadow public abstract int shadow$getXpNeededForNextLevel(); @Shadow public abstract FoodData shadow$getFoodData(); @Shadow public abstract boolean shadow$isCreative(); @Shadow public abstract String shadow$getScoreboardName(); - @Shadow public abstract void shadow$awardStat(ResourceLocation stat); + @Shadow public abstract void shadow$awardStat(Identifier stat); @Shadow public abstract Inventory shadow$getInventory(); + @Shadow public abstract PermissionSet shadow$permissions(); @Shadow public Either shadow$startSleepInBed(final BlockPos param0) { return null; // Shadowed } // @formatter: on + private boolean impl$affectsSpawning = true; protected final boolean impl$isFake = this.bridge$isFakePlayer(); @@ -222,12 +225,12 @@ public abstract class PlayerMixin extends AvatarMixin implements PlayerBridge, G this.shadow$level().playSound(player, x, y, z, sound, category, volume, pitch); } - @Redirect(method = "canUseGameMasterBlocks", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;getPermissionLevel()I")) - private int impl$checkPermissionForCommandBlock(final net.minecraft.world.entity.player.Player playerEntity) { + @Redirect(method = "canUseGameMasterBlocks", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;permissions()Lnet/minecraft/server/permissions/PermissionSet;")) + private PermissionSet impl$checkPermissionForCommandBlock(final Player playerEntity) { if (this instanceof Subject) { - return ((Subject) this).hasPermission(Constants.Permissions.COMMAND_BLOCK_PERMISSION) ? Constants.Permissions.COMMAND_BLOCK_LEVEL : 0; + return ((Subject) this).hasPermission(Constants.Permissions.COMMAND_BLOCK_PERMISSION) ? PermissionSet.ALL_PERMISSIONS : PermissionSet.NO_PERMISSIONS; } else { - return this.shadow$getPermissionLevel(); + return this.shadow$permissions(); } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/player/PlayerMixin_Attack.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/player/PlayerMixin_Attack.java index af6d938388c..7bd5c3dabf6 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/player/PlayerMixin_Attack.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/player/PlayerMixin_Attack.java @@ -32,7 +32,6 @@ import com.llamalad7.mixinextras.sugar.Local; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvent; -import net.minecraft.sounds.SoundSource; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; @@ -41,7 +40,6 @@ import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.event.cause.entity.damage.DamageStepTypes; import org.spongepowered.api.event.entity.AttackEntityEvent; @@ -79,8 +77,12 @@ public abstract class PlayerMixin_Attack extends LivingEntityMixin_Damage implem return this.attack$trackers.peekLast(); } - @ModifyVariable(method = "attack", at = @At("LOAD"), - slice = @Slice(to = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;getEnchantedDamage(Lnet/minecraft/world/entity/Entity;FLnet/minecraft/world/damagesource/DamageSource;)F", ordinal = 0))) + @ModifyVariable( + method = "attack(Lnet/minecraft/world/entity/Entity;)V", + ordinal = 1, + at = @At(value = "LOAD", ordinal = 0), + slice = @Slice(to = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;getEnchantedDamage(Lnet/minecraft/world/entity/Entity;FLnet/minecraft/world/damagesource/DamageSource;)F")) + ) private float attack$firePreEvent(final float damage, @Local(argsOnly = true) final Entity target, @Local final DamageSource source, @Local final ItemStack weapon, final @Cancellable CallbackInfo ci) { final SpongeAttackTracker tracker = SpongeAttackTracker.callAttackPreEvent((org.spongepowered.api.entity.Entity) target, source, damage, weapon); if (tracker == null) { @@ -103,7 +105,7 @@ public abstract class PlayerMixin_Attack extends LivingEntityMixin_Damage implem @ModifyVariable(method = "attack", at = @At("LOAD"), ordinal = 0, slice = @Slice( from = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;getAttackStrengthScale(F)F"), - to = @At(value = "FIELD", target = "Lnet/minecraft/tags/EntityTypeTags;REDIRECTABLE_PROJECTILE:Lnet/minecraft/tags/TagKey;") + to = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;deflectProjectile(Lnet/minecraft/world/entity/Entity;)Z") )) private float attack$modifyBeforeBaseCooldown(final float damage) { final SpongeAttackTracker tracker = this.attack$tracker(); @@ -112,7 +114,7 @@ public abstract class PlayerMixin_Attack extends LivingEntityMixin_Damage implem @ModifyVariable(method = "attack", at = @At("STORE"), ordinal = 0, slice = @Slice( from = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;getAttackStrengthScale(F)F"), - to = @At(value = "FIELD", target = "Lnet/minecraft/tags/EntityTypeTags;REDIRECTABLE_PROJECTILE:Lnet/minecraft/tags/TagKey;") + to = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;deflectProjectile(Lnet/minecraft/world/entity/Entity;)Z") )) private float attack$modifyAfterBaseCooldown(final float damage) { final SpongeAttackTracker tracker = this.attack$tracker(); @@ -121,7 +123,7 @@ public abstract class PlayerMixin_Attack extends LivingEntityMixin_Damage implem @ModifyVariable(method = "attack", at = @At("LOAD"), ordinal = 1, slice = @Slice( from = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;getAttackStrengthScale(F)F"), - to = @At(value = "FIELD", target = "Lnet/minecraft/tags/EntityTypeTags;REDIRECTABLE_PROJECTILE:Lnet/minecraft/tags/TagKey;") + to = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;deflectProjectile(Lnet/minecraft/world/entity/Entity;)Z") )) private float attack$modifyBeforeEnchantmentCooldown(final float damage) { final SpongeAttackTracker tracker = this.attack$tracker(); @@ -130,14 +132,15 @@ public abstract class PlayerMixin_Attack extends LivingEntityMixin_Damage implem @ModifyVariable(method = "attack", at = @At("STORE"), ordinal = 1, slice = @Slice( from = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;getAttackStrengthScale(F)F"), - to = @At(value = "FIELD", target = "Lnet/minecraft/tags/EntityTypeTags;REDIRECTABLE_PROJECTILE:Lnet/minecraft/tags/TagKey;") + to = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;deflectProjectile(Lnet/minecraft/world/entity/Entity;)Z") )) private float attack$modifyAfterEnchantmentCooldown(final float damage) { final SpongeAttackTracker tracker = this.attack$tracker(); return tracker == null ? damage : tracker.endStep(DamageStepTypes.ENCHANTMENT_COOLDOWN, damage); } - @Inject(method = "attack", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Level;playSound(Lnet/minecraft/world/entity/Entity;DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FF)V"), slice = @Slice( + @Inject(method = "attack", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;playServerSideSound(Lnet/minecraft/sounds/SoundEvent;)V"), slice = @Slice( from = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;isSprinting()Z", ordinal = 0), to = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/Item;getAttackDamageBonus(Lnet/minecraft/world/entity/Entity;FLnet/minecraft/world/damagesource/DamageSource;)F"))) private void attack$captureStrongSprint(final Entity target, final CallbackInfo ci) { @@ -163,8 +166,8 @@ public abstract class PlayerMixin_Attack extends LivingEntityMixin_Damage implem } @ModifyVariable(method = "attack", at = @At(value = "LOAD", ordinal = 0), ordinal = 0, slice = @Slice( - from = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;isSprinting()Z", ordinal = 1), - to = @At(value = "INVOKE", target = "Lnet/minecraft/world/phys/Vec3;horizontalDistanceSqr()D") + from = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;canCriticalAttack(Lnet/minecraft/world/entity/Entity;)Z"), + to = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;isSweepAttack(ZZZ)Z") )) private float attack$modifyBeforeCriticalHit(final float damage) { final SpongeAttackTracker tracker = this.attack$tracker(); @@ -172,8 +175,8 @@ public abstract class PlayerMixin_Attack extends LivingEntityMixin_Damage implem } @ModifyVariable(method = "attack", at = @At("STORE"), ordinal = 0, slice = @Slice( - from = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;isSprinting()Z", ordinal = 1), - to = @At(value = "INVOKE", target = "Lnet/minecraft/world/phys/Vec3;horizontalDistanceSqr()D") + from = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;canCriticalAttack(Lnet/minecraft/world/entity/Entity;)Z"), + to = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;isSweepAttack(ZZZ)Z") )) private float attack$modifyAfterCriticalHit(final float damage) { final SpongeAttackTracker tracker = this.attack$tracker(); @@ -203,10 +206,9 @@ public abstract class PlayerMixin_Attack extends LivingEntityMixin_Damage implem } @WrapWithCondition(method = "attack", - slice = @Slice(from = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;causeFoodExhaustion(F)V")), - at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Level;playSound(Lnet/minecraft/world/entity/Entity;DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FF)V")) - private boolean attack$preventSound(final Level level, final Entity player, final double x, final double y, final double z, - final SoundEvent sound, final SoundSource source, final float volume, final float pitch) { + slice = @Slice(from = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;causeFoodExhaustion(F)V")), + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;playServerSideSound(Lnet/minecraft/sounds/SoundEvent;)V")) + private boolean attack$preventSound(Player instance, SoundEvent soundEvent) { final SpongeAttackTracker tracker = this.attack$tracker(); return tracker == null || !tracker.postEvent().isCancelled(); } @@ -218,9 +220,17 @@ public abstract class PlayerMixin_Attack extends LivingEntityMixin_Damage implem this.attack$trackers.removeLast(); } - @WrapOperation(method = "attack", - slice = @Slice(from = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Level;getEntitiesOfClass(Ljava/lang/Class;Lnet/minecraft/world/phys/AABB;)Ljava/util/List;")), - at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;distanceToSqr(Lnet/minecraft/world/entity/Entity;)D")) + @WrapOperation(method = { + "doSweepAttack(Lnet/minecraft/world/entity/Entity;FLnet/minecraft/world/damagesource/DamageSource;F)V", + // NeoForge changes where this gets invoked in a new method, so we add it as a target + "doSweepAttack(Lnet/minecraft/world/entity/Entity;FLnet/minecraft/world/damagesource/DamageSource;FLnet/minecraft/world/phys/AABB;)V" + }, + slice = @Slice(from = @At(value = "INVOKE", + target = "Lnet/minecraft/world/level/Level;getEntitiesOfClass(Ljava/lang/Class;Lnet/minecraft/world/phys/AABB;)Ljava/util/List;" + )), + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;distanceToSqr(Lnet/minecraft/world/entity/Entity;)D"), + require = 1 + ) private double sweepAttack$fireEvents(final Player self, final Entity sweepTarget, final Operation operation) { final double distanceSquared = operation.call(self, sweepTarget); if (!(distanceSquared < this.attack$interactionRangeSquared())) { @@ -269,16 +279,27 @@ public abstract class PlayerMixin_Attack extends LivingEntityMixin_Damage implem return distanceSquared; } - @WrapOperation(method = "attack", - slice = @Slice(from = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Level;getEntitiesOfClass(Ljava/lang/Class;Lnet/minecraft/world/phys/AABB;)Ljava/util/List;")), - at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;getEnchantedDamage(Lnet/minecraft/world/entity/Entity;FLnet/minecraft/world/damagesource/DamageSource;)F")) + @WrapOperation(method = { + "doSweepAttack(Lnet/minecraft/world/entity/Entity;FLnet/minecraft/world/damagesource/DamageSource;F)V", + // NeoForge changes where this gets invoked in a new method, so we add it as a target + "doSweepAttack(Lnet/minecraft/world/entity/Entity;FLnet/minecraft/world/damagesource/DamageSource;FLnet/minecraft/world/phys/AABB;)V" + }, + require = 1, + slice = @Slice(from = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Level;getEntitiesOfClass(Ljava/lang/Class;Lnet/minecraft/world/phys/AABB;)Ljava/util/List;")), + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;getEnchantedDamage(Lnet/minecraft/world/entity/Entity;FLnet/minecraft/world/damagesource/DamageSource;)F")) private float sweepAttack$cancelEnchantedDamage(final Player self, final Entity sweepTarget, final float damage, final DamageSource source, final Operation operation) { return damage; // We already did it above } - @WrapOperation(method = "attack", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;knockback(DDD)V"), slice = @Slice( + @WrapOperation(method = { + "doSweepAttack(Lnet/minecraft/world/entity/Entity;FLnet/minecraft/world/damagesource/DamageSource;F)V", + // NeoForge changes where this gets invoked in a new method, so we add it as a target + "doSweepAttack(Lnet/minecraft/world/entity/Entity;FLnet/minecraft/world/damagesource/DamageSource;FLnet/minecraft/world/phys/AABB;)V" + }, at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;knockback(DDD)V"), slice = @Slice( from = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Level;getEntitiesOfClass(Ljava/lang/Class;Lnet/minecraft/world/phys/AABB;)Ljava/util/List;"), - to = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/enchantment/EnchantmentHelper;doPostAttackEffects(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/damagesource/DamageSource;)V"))) + to = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/enchantment/EnchantmentHelper;doPostAttackEffects(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/damagesource/DamageSource;)V")), + require = 1 + ) private void sweepAttack$knockbackModifier( final LivingEntity sweepTarget, double modifier, final double dirX, final double dirZ, final Operation operation) { final SpongeAttackTracker sweepTracker = this.attack$tracker(); @@ -288,8 +309,18 @@ public abstract class PlayerMixin_Attack extends LivingEntityMixin_Damage implem operation.call(sweepTarget, modifier, dirX, dirZ); } - @WrapOperation(method = "attack", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;hurtServer(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/damagesource/DamageSource;F)Z"), - slice = @Slice(from = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Level;getEntitiesOfClass(Ljava/lang/Class;Lnet/minecraft/world/phys/AABB;)Ljava/util/List;"))) + @WrapOperation(method = { + "doSweepAttack(Lnet/minecraft/world/entity/Entity;FLnet/minecraft/world/damagesource/DamageSource;F)V", + // NeoForge changes where this gets invoked in a new method, so we add it as a target + "doSweepAttack(Lnet/minecraft/world/entity/Entity;FLnet/minecraft/world/damagesource/DamageSource;FLnet/minecraft/world/phys/AABB;)V" + }, at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/entity/LivingEntity;hurtServer(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/damagesource/DamageSource;F)Z" + ), + slice = @Slice(from = @At(value = "INVOKE", + target = "Lnet/minecraft/world/level/Level;getEntitiesOfClass(Ljava/lang/Class;Lnet/minecraft/world/phys/AABB;)Ljava/util/List;" + )), + require = 1 + ) private boolean sweepAttack$finalDamage( final LivingEntity sweepTarget, final ServerLevel level, final DamageSource source, float damage, final Operation operation) { @@ -302,7 +333,7 @@ public abstract class PlayerMixin_Attack extends LivingEntityMixin_Damage implem return result; } - @Inject(method = "attack", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;setItemInHand(Lnet/minecraft/world/InteractionHand;Lnet/minecraft/world/item/ItemStack;)V", shift = At.Shift.AFTER)) + @Inject(method = "itemAttackInteraction", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;setItemInHand(Lnet/minecraft/world/InteractionHand;Lnet/minecraft/world/item/ItemStack;)V", shift = At.Shift.AFTER)) private void attack$captureInventoryChange(final CallbackInfo ci) { PhaseTracker.getWorldInstance(this.shadow$level()).getPhaseContext().getTransactor().logPlayerInventoryChange((Player) (Object) this, PlayerInventoryTransaction.EventCreator.STANDARD); this.inventoryMenu.broadcastChanges(); diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/player/PlayerMixin_Shared_Damage.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/player/PlayerMixin_Shared_Damage.java index 1dd64ca7ac7..4d5b7f1dd1e 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/player/PlayerMixin_Shared_Damage.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/player/PlayerMixin_Shared_Damage.java @@ -25,7 +25,7 @@ package org.spongepowered.common.mixin.core.world.entity.player; import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.entity.player.Player; import org.spongepowered.api.event.cause.entity.damage.DamageStepTypes; import org.spongepowered.asm.mixin.Mixin; @@ -53,10 +53,10 @@ public abstract class PlayerMixin_Shared_Damage extends LivingEntityMixin_Damage return tracker == null || !tracker.isSkipped(DamageStepTypes.ABSORPTION); } - @WrapWithCondition(method = "actuallyHurt", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;awardStat(Lnet/minecraft/resources/ResourceLocation;I)V"), slice = @Slice( + @WrapWithCondition(method = "actuallyHurt", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;awardStat(Lnet/minecraft/resources/Identifier;I)V"), slice = @Slice( from = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;setAbsorptionAmount(F)V"), to = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;causeFoodExhaustion(F)V"))) - private boolean damage$skipAbsorptionStat(final Player self, final ResourceLocation stat, final int amount) { + private boolean damage$skipAbsorptionStat(final Player self, final Identifier stat, final int amount) { final SpongeDamageTracker tracker = this.damage$tracker(); return tracker == null || !tracker.isSkipped(DamageStepTypes.ABSORPTION); } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/AbstractArrowMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/arrow/AbstractArrowMixin.java similarity index 97% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/AbstractArrowMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/arrow/AbstractArrowMixin.java index 54790720d92..0cbb1ce6fc6 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/AbstractArrowMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/arrow/AbstractArrowMixin.java @@ -22,13 +22,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.projectile; +package org.spongepowered.common.mixin.core.world.entity.projectile.arrow; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.projectile.arrow.AbstractArrow; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; @@ -45,6 +45,7 @@ import org.spongepowered.common.bridge.world.entity.projectile.AbstractArrowBridge; import org.spongepowered.common.bridge.world.level.LevelBridge; import org.spongepowered.common.event.SpongeCommonEventFactory; +import org.spongepowered.common.mixin.core.world.entity.projectile.ProjectileMixin; @Mixin(AbstractArrow.class) public abstract class AbstractArrowMixin extends ProjectileMixin implements AbstractArrowBridge { @@ -149,7 +150,7 @@ private void onProjectileHit(final EntityHitResult hitResult, final CallbackInfo @Inject( method = "tickDespawn", - at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/projectile/AbstractArrow;discard()V") + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/projectile/arrow/AbstractArrow;discard()V") ) private void impl$throwExpireArrow(final CallbackInfo ci) { this.impl$callExpireEntityEvent(); diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/ThrownTridentMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/arrow/ThrownTridentMixin.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/ThrownTridentMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/arrow/ThrownTridentMixin.java index d5abc0c2954..c5b4589a0c3 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/ThrownTridentMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/arrow/ThrownTridentMixin.java @@ -22,10 +22,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.projectile; +package org.spongepowered.common.mixin.core.world.entity.projectile.arrow; import net.minecraft.sounds.SoundEvents; -import net.minecraft.world.entity.projectile.ThrownTrident; +import net.minecraft.world.entity.projectile.arrow.ThrownTrident; import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.HitResult; import org.spongepowered.asm.mixin.Mixin; @@ -35,6 +35,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.common.bridge.world.level.LevelBridge; import org.spongepowered.common.event.SpongeCommonEventFactory; +import org.spongepowered.common.mixin.core.world.entity.projectile.ProjectileMixin; @Mixin(ThrownTrident.class) public abstract class ThrownTridentMixin extends ProjectileMixin { diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/AbstractHurtingProjectileMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/hurtingprojectile/AbstractHurtingProjectileMixin.java similarity index 86% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/AbstractHurtingProjectileMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/hurtingprojectile/AbstractHurtingProjectileMixin.java index b909d0e1e36..d1354b772d2 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/AbstractHurtingProjectileMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/hurtingprojectile/AbstractHurtingProjectileMixin.java @@ -22,22 +22,23 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.projectile; +package org.spongepowered.common.mixin.core.world.entity.projectile.hurtingprojectile; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.projectile.AbstractHurtingProjectile; import net.minecraft.world.entity.projectile.ProjectileDeflection; +import net.minecraft.world.entity.projectile.hurtingprojectile.AbstractHurtingProjectile; import net.minecraft.world.phys.HitResult; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.common.bridge.world.level.LevelBridge; import org.spongepowered.common.event.SpongeCommonEventFactory; +import org.spongepowered.common.mixin.core.world.entity.projectile.ProjectileMixin; @Mixin(AbstractHurtingProjectile.class) public abstract class AbstractHurtingProjectileMixin extends ProjectileMixin { - @Redirect(method = "tick()V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/projectile/AbstractHurtingProjectile;hitTargetOrDeflectSelf(Lnet/minecraft/world/phys/HitResult;)Lnet/minecraft/world/entity/projectile/ProjectileDeflection;")) + @Redirect(method = "tick()V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/projectile/hurtingprojectile/AbstractHurtingProjectile;hitTargetOrDeflectSelf(Lnet/minecraft/world/phys/HitResult;)Lnet/minecraft/world/entity/projectile/ProjectileDeflection;")) private ProjectileDeflection impl$callCollideImpactEvent(AbstractHurtingProjectile projectile, HitResult result) { if (result.getType() == HitResult.Type.MISS || ((LevelBridge) this.shadow$level()).bridge$isFake()) { return this.shadow$hitTargetOrDeflectSelf(result); diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/LargeFireballMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/hurtingprojectile/LargeFireballMixin.java similarity index 97% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/LargeFireballMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/hurtingprojectile/LargeFireballMixin.java index 711996a198f..0ea2b682b46 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/LargeFireballMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/hurtingprojectile/LargeFireballMixin.java @@ -22,10 +22,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.projectile; +package org.spongepowered.common.mixin.core.world.entity.projectile.hurtingprojectile; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.projectile.LargeFireball; +import net.minecraft.world.entity.projectile.hurtingprojectile.LargeFireball; import net.minecraft.world.level.Level; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.data.Keys; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/SmallFireballMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/hurtingprojectile/SmallFireballMixin.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/SmallFireballMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/hurtingprojectile/SmallFireballMixin.java index c63e625c155..2c5a7ac1cde 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/SmallFireballMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/hurtingprojectile/SmallFireballMixin.java @@ -22,10 +22,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.projectile; +package org.spongepowered.common.mixin.core.world.entity.projectile.hurtingprojectile; import net.minecraft.core.BlockPos; -import net.minecraft.world.entity.projectile.SmallFireball; +import net.minecraft.world.entity.projectile.hurtingprojectile.SmallFireball; import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/WitherSkullMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/hurtingprojectile/WitherSkullMixin.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/WitherSkullMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/hurtingprojectile/WitherSkullMixin.java index 5a93b6709a6..b65f0b5b3a7 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/WitherSkullMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/hurtingprojectile/WitherSkullMixin.java @@ -22,10 +22,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.projectile; +package org.spongepowered.common.mixin.core.world.entity.projectile.hurtingprojectile; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.projectile.WitherSkull; +import net.minecraft.world.entity.projectile.hurtingprojectile.WitherSkull; import net.minecraft.world.level.Level; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.data.Keys; @@ -43,7 +43,7 @@ import java.util.Optional; -@Mixin(net.minecraft.world.entity.projectile.WitherSkull.class) +@Mixin(net.minecraft.world.entity.projectile.hurtingprojectile.WitherSkull.class) public abstract class WitherSkullMixin extends AbstractHurtingProjectileMixin implements WitherSkullBridge, ExplosiveBridge { private float impl$explosionRadius = Constants.Entity.WitherSkull.DEFAULT_EXPLOSION_RADIUS; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/SnowballMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/throwableitemprojectile/SnowballMixin.java similarity index 90% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/SnowballMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/throwableitemprojectile/SnowballMixin.java index 00ec313c112..b07e81e60cc 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/SnowballMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/throwableitemprojectile/SnowballMixin.java @@ -22,14 +22,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.projectile; +package org.spongepowered.common.mixin.core.world.entity.projectile.throwableitemprojectile; import org.spongepowered.api.entity.projectile.Snowball; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.common.mixin.core.world.entity.projectile.ThrowableProjectileMixin; -@Mixin(net.minecraft.world.entity.projectile.Snowball.class) +@Mixin(net.minecraft.world.entity.projectile.throwableitemprojectile.Snowball.class) public abstract class SnowballMixin extends ThrowableProjectileMixin implements Snowball { // TODO Key not implemented diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/ThrownEggMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/throwableitemprojectile/ThrownEggMixin.java similarity index 90% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/ThrownEggMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/throwableitemprojectile/ThrownEggMixin.java index 40bebdc1d5b..592656ff2b4 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/ThrownEggMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/throwableitemprojectile/ThrownEggMixin.java @@ -22,12 +22,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.projectile; +package org.spongepowered.common.mixin.core.world.entity.projectile.throwableitemprojectile; -import net.minecraft.world.entity.projectile.ThrownEgg; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrownEgg; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.common.mixin.core.world.entity.projectile.ThrowableProjectileMixin; @Mixin(ThrownEgg.class) public abstract class ThrownEggMixin extends ThrowableProjectileMixin { diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/ThrownEnderpearlMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/throwableitemprojectile/ThrownEnderpearlMixin.java similarity index 93% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/ThrownEnderpearlMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/throwableitemprojectile/ThrownEnderpearlMixin.java index 9bd4d1b0e25..07b38137601 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/ThrownEnderpearlMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/projectile/throwableitemprojectile/ThrownEnderpearlMixin.java @@ -22,10 +22,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.projectile; +package org.spongepowered.common.mixin.core.world.entity.projectile.throwableitemprojectile; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.projectile.ThrownEnderpearl; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrownEnderpearl; import net.minecraft.world.level.portal.TeleportTransition; import org.spongepowered.api.event.CauseStackManager; import org.spongepowered.api.event.EventContextKeys; @@ -35,6 +35,7 @@ import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.common.event.tracking.PhaseTracker; +import org.spongepowered.common.mixin.core.world.entity.projectile.ThrowableProjectileMixin; @Mixin(ThrownEnderpearl.class) public abstract class ThrownEnderpearlMixin extends ThrowableProjectileMixin { diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/AbstractBoatMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/boat/AbstractBoatMixin.java similarity index 98% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/AbstractBoatMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/boat/AbstractBoatMixin.java index 26b135e677a..c5d72fe7604 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/AbstractBoatMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/boat/AbstractBoatMixin.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.vehicle; +package org.spongepowered.common.mixin.core.world.entity.vehicle.boat; -import net.minecraft.world.entity.vehicle.AbstractBoat; +import net.minecraft.world.entity.vehicle.boat.AbstractBoat; import org.spongepowered.api.data.Keys; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.Constant; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/AbstractMinecartContainerMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/AbstractMinecartContainerMixin.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/AbstractMinecartContainerMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/AbstractMinecartContainerMixin.java index 5cee1271dad..8d40d43a1f3 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/AbstractMinecartContainerMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/AbstractMinecartContainerMixin.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.vehicle; +package org.spongepowered.common.mixin.core.world.entity.vehicle.minecart; -import net.minecraft.world.entity.vehicle.AbstractMinecartContainer; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecartContainer; import org.spongepowered.asm.mixin.Mixin; @Mixin(AbstractMinecartContainer.class) diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/AbstractMinecartMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/AbstractMinecartMixin.java similarity index 97% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/AbstractMinecartMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/AbstractMinecartMixin.java index 9844796031e..a2be1bcb455 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/AbstractMinecartMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/AbstractMinecartMixin.java @@ -22,10 +22,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.vehicle; +package org.spongepowered.common.mixin.core.world.entity.vehicle.minecart; import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; import net.minecraft.world.phys.Vec3; import org.spongepowered.api.data.Keys; import org.spongepowered.asm.mixin.Mixin; @@ -35,6 +35,7 @@ import org.spongepowered.asm.mixin.injection.Slice; import org.spongepowered.common.bridge.data.SpongeDataHolderBridge; import org.spongepowered.common.bridge.world.entity.vehicle.AbstractMinecartBridge; +import org.spongepowered.common.mixin.core.world.entity.vehicle.VehicleEntityMixin; import org.spongepowered.common.util.Constants; import org.spongepowered.math.vector.Vector3d; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/MinecartCommandBlockMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/MinecartCommandBlockMixin.java similarity index 88% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/MinecartCommandBlockMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/MinecartCommandBlockMixin.java index 1ad89d9829b..5f4a6ab62d2 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/MinecartCommandBlockMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/MinecartCommandBlockMixin.java @@ -22,10 +22,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.vehicle; +package org.spongepowered.common.mixin.core.world.entity.vehicle.minecart; import net.minecraft.commands.CommandSourceStack; -import net.minecraft.world.entity.vehicle.MinecartCommandBlock; +import net.minecraft.world.entity.vehicle.minecart.MinecartCommandBlock; import net.minecraft.world.level.BaseCommandBlock; import org.spongepowered.api.event.Cause; import org.spongepowered.api.service.permission.PermissionService; @@ -56,6 +56,9 @@ public abstract class MinecartCommandBlockMixin extends AbstractMinecartMixin im @Override public CommandSourceStack bridge$getCommandSource(final Cause cause) { - return this.commandBlock.createCommandSourceStack(SpongeCommon.server()); + if (this.level() instanceof net.minecraft.server.level.ServerLevel sl) { + return this.commandBlock.createCommandSourceStack(sl, SpongeCommon.server()); + } + return this.commandBlock.createCommandSourceStack(SpongeCommon.server().overworld(), SpongeCommon.server()); } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/MinecartCommandBlock_MinecartCommandBaseMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/MinecartCommandBlock_MinecartCommandBaseMixin.java new file mode 100644 index 00000000000..25e5e41a1d4 --- /dev/null +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/MinecartCommandBlock_MinecartCommandBaseMixin.java @@ -0,0 +1,75 @@ +/* + * This file is part of Sponge, licensed under the MIT License (MIT). + * + * Copyright (c) SpongePowered + * Copyright (c) contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.spongepowered.common.mixin.core.world.entity.vehicle.minecart; + +import net.kyori.adventure.audience.MessageType; +import net.kyori.adventure.identity.Identity; +import net.kyori.adventure.text.Component; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.vehicle.minecart.MinecartCommandBlock; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.spongepowered.api.event.Cause; +import org.spongepowered.api.service.permission.Subject; +import org.spongepowered.api.service.permission.SubjectProxy; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.common.adventure.SpongeAdventure; +import org.spongepowered.common.mixin.core.world.BaseCommandBlockMixin; + +@Mixin(targets = "net.minecraft.world.entity.vehicle.minecart.MinecartCommandBlock$MinecartCommandBase") +public abstract class MinecartCommandBlock_MinecartCommandBaseMixin extends BaseCommandBlockMixin implements SubjectProxy { + + // @formatter:off + @Shadow @Final MinecartCommandBlock this$0; + // @formatter:on + + @Override + public Subject subject() { + return (Subject) this.this$0; + } + + @Override + public CommandSourceStack bridge$getCommandSource(final Cause cause) { + if (!(this.this$0.level() instanceof ServerLevel sl)) { + return null; + } + return this.createCommandSourceStack(sl, this.shadow$createSource(sl)); + } + + @Override + @SuppressWarnings({"deprecation", "UnstableApiUsage"}) + public void sendMessage(final @NonNull Identity identity, final @NonNull Component message, final @NonNull MessageType type) { + if (!(this.this$0.level() instanceof ServerLevel sl)) { + return; + } + final var source = this.shadow$createSource(sl); + if (source == null) { + return; + } + source.sendSystemMessage(SpongeAdventure.asVanilla(message)); + } +} diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/MinecartFurnaceMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/MinecartFurnaceMixin.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/MinecartFurnaceMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/MinecartFurnaceMixin.java index 69ce2149a1a..10f0b276bec 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/MinecartFurnaceMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/MinecartFurnaceMixin.java @@ -22,10 +22,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.vehicle; +package org.spongepowered.common.mixin.core.world.entity.vehicle.minecart; import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.entity.vehicle.MinecartFurnace; +import net.minecraft.world.entity.vehicle.minecart.MinecartFurnace; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.injection.At; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/MinecartTNTMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/MinecartTNTMixin.java similarity index 92% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/MinecartTNTMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/MinecartTNTMixin.java index 6d2628e803d..158f2490746 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/MinecartTNTMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/MinecartTNTMixin.java @@ -22,11 +22,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.vehicle; +package org.spongepowered.common.mixin.core.world.entity.vehicle.minecart; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.damagesource.DamageSource; -import net.minecraft.world.entity.vehicle.MinecartTNT; +import net.minecraft.world.entity.vehicle.minecart.MinecartTNT; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.api.data.Keys; import org.spongepowered.api.world.server.ServerWorld; @@ -103,8 +103,8 @@ public abstract class MinecartTNTMixin extends AbstractMinecartMixin implements this.impl$primeCause = damageSource; } - @Inject(method = "activateMinecart(IIIZ)V", at = @At("HEAD")) - private void impl$onActivateSetPrimeCauseNotifier(final int x, final int y, final int z, final boolean receivingPower, final CallbackInfo ci) { + @Inject(method = "activateMinecart(Lnet/minecraft/server/level/ServerLevel;IIIZ)V", at = @At("HEAD")) + private void impl$onActivateSetPrimeCauseNotifier(final ServerLevel level, final int x, final int y, final int z, final boolean receivingPower, final CallbackInfo ci) { if (((LevelBridge) this.shadow$level()).bridge$isFake()) { return; } @@ -147,7 +147,7 @@ public abstract class MinecartTNTMixin extends AbstractMinecartMixin implements } @Inject(method = "hurtServer", cancellable = true, at = @At(value = "INVOKE", - target = "Lnet/minecraft/world/entity/vehicle/MinecartTNT;explode(Lnet/minecraft/world/damagesource/DamageSource;D)V")) + target = "Lnet/minecraft/world/entity/vehicle/minecart/MinecartTNT;explode(Lnet/minecraft/world/damagesource/DamageSource;D)V")) private void attackImpl$postOnAttackEntityFrom(final ServerLevel level, final DamageSource source, final float damage, final CallbackInfoReturnable cir) { if (SpongeDamageTracker.callDamageEvents((org.spongepowered.api.entity.Entity) this, source, damage) == null) { cir.setReturnValue(true); diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/OldMinecartBehaviourMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/OldMinecartBehaviourMixin.java similarity index 88% rename from src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/OldMinecartBehaviourMixin.java rename to src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/OldMinecartBehaviourMixin.java index c08dbd2504b..88d6dd7e0cc 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/OldMinecartBehaviourMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/entity/vehicle/minecart/OldMinecartBehaviourMixin.java @@ -22,10 +22,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.core.world.entity.vehicle; +package org.spongepowered.common.mixin.core.world.entity.vehicle.minecart; -import net.minecraft.world.entity.vehicle.AbstractMinecart; -import net.minecraft.world.entity.vehicle.OldMinecartBehavior; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.OldMinecartBehavior; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @@ -34,7 +34,7 @@ @Mixin(OldMinecartBehavior.class) public abstract class OldMinecartBehaviourMixin { - @Redirect(method = "getSlowdownFactor", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/vehicle/AbstractMinecart;isVehicle()Z")) + @Redirect(method = "getSlowdownFactor", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/vehicle/minecart/AbstractMinecart;isVehicle()Z")) private boolean impl$applyDragIfEmpty(final AbstractMinecart minecart) { return !((AbstractMinecartBridge) minecart).bridge$getSlowWhenEmpty() || minecart.isVehicle(); } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/item/ItemCooldownsMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/item/ItemCooldownsMixin.java index 113ff390aef..ca570f63e46 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/item/ItemCooldownsMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/item/ItemCooldownsMixin.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.mixin.core.world.item; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemCooldowns; import net.minecraft.world.item.ItemStack; @@ -50,7 +50,7 @@ public abstract class ItemCooldownsMixin implements ItemCooldownsBridge { // @formatter:off @Shadow @Final private Map cooldowns; - @Shadow public abstract ResourceLocation shadow$getCooldownGroup(final ItemStack $$0); + @Shadow public abstract Identifier shadow$getCooldownGroup(final ItemStack $$0); // @formatter:on @@ -58,7 +58,7 @@ public abstract class ItemCooldownsMixin implements ItemCooldownsBridge { private int impl$lastSetCooldownResult; @Inject( - method = "addCooldown(Lnet/minecraft/resources/ResourceLocation;I)V", + method = "addCooldown(Lnet/minecraft/resources/Identifier;I)V", at = @At( value = "HEAD", remap = false @@ -66,7 +66,7 @@ public abstract class ItemCooldownsMixin implements ItemCooldownsBridge { locals = LocalCapture.CAPTURE_FAILHARD, cancellable = true ) - private void impl$throwEventOnSetAndTrackResult(final ResourceLocation group, final int ticks, final CallbackInfo ci) { + private void impl$throwEventOnSetAndTrackResult(final Identifier group, final int ticks, final CallbackInfo ci) { this.impl$lastSetCooldownResult = this.impl$throwSetCooldownEvent(group, ticks); if (this.impl$lastSetCooldownResult == Constants.Sponge.Entity.Player.ITEM_COOLDOWN_CANCELLED) { ci.cancel(); @@ -74,7 +74,7 @@ public abstract class ItemCooldownsMixin implements ItemCooldownsBridge { } @ModifyVariable( - method = "addCooldown(Lnet/minecraft/resources/ResourceLocation;I)V", + method = "addCooldown(Lnet/minecraft/resources/Identifier;I)V", at = @At( value = "HEAD", remap = false @@ -86,16 +86,16 @@ public abstract class ItemCooldownsMixin implements ItemCooldownsBridge { } @Redirect(method = "tick", at = @At(value = "INVOKE", target = "Ljava/util/Map$Entry;getKey()Ljava/lang/Object;", remap = false)) - private Object onTick(final Map.Entry entry) { + private Object onTick(final Map.Entry entry) { this.impl$throwEndCooldownEvent(entry.getKey()); return entry.getKey(); } - protected int impl$throwSetCooldownEvent(final ResourceLocation group, final int ticks) { + protected int impl$throwSetCooldownEvent(final Identifier group, final int ticks) { return 0; } - protected void impl$throwEndCooldownEvent(final ResourceLocation group) { + protected void impl$throwEndCooldownEvent(final Identifier group) { } @@ -106,7 +106,7 @@ private Object onTick(final Map.Entry entry) { @Inject(method = "getCooldownPercent", at = @At("HEAD"), cancellable = true) private void impl$getCooldownPercentInfiniteCooldown(final ItemStack $$0, final float $$1, final CallbackInfoReturnable cir) { - ResourceLocation $$2 = this.shadow$getCooldownGroup($$0); + Identifier $$2 = this.shadow$getCooldownGroup($$0); final ItemCooldowns_CooldownInstanceAccessor cooldown = (ItemCooldowns_CooldownInstanceAccessor) this.cooldowns.get($$0); if (cooldown != null && cooldown.accessor$endTime() == cooldown.accessor$startTime() - 1) { cir.setReturnValue(1.0F); diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/item/ServerItemCooldownsMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/item/ServerItemCooldownsMixin.java index 44695146492..3799930c8be 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/item/ServerItemCooldownsMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/item/ServerItemCooldownsMixin.java @@ -24,7 +24,7 @@ */ package org.spongepowered.common.mixin.core.world.item; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ServerItemCooldowns; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.Sponge; @@ -50,11 +50,11 @@ public abstract class ServerItemCooldownsMixin extends ItemCooldownsMixin { // @formmater:off @Shadow @Final private net.minecraft.server.level.ServerPlayer player; - @Shadow protected abstract void shadow$onCooldownStarted(ResourceLocation group, int ticksIn); + @Shadow protected abstract void shadow$onCooldownStarted(Identifier group, int ticksIn); // @formmater:on @Override - protected int impl$throwSetCooldownEvent(final ResourceLocation group, final int ticks) { + protected int impl$throwSetCooldownEvent(final Identifier group, final int ticks) { if (ticks == 0) { return 0; } @@ -71,7 +71,7 @@ public abstract class ServerItemCooldownsMixin extends ItemCooldownsMixin { } @Override - protected void impl$throwEndCooldownEvent(final ResourceLocation group) { + protected void impl$throwEndCooldownEvent(final Identifier group) { final CooldownEvent.End event = SpongeEventFactory.createCooldownEventEnd(PhaseTracker.getInstance().currentCause(), (ResourceKey) (Object) group, (ServerPlayer) this.player); Sponge.eventManager().post(event); diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/item/crafting/RecipeManagerMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/item/crafting/RecipeManagerMixin.java index 99704db7bef..15907a1612b 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/item/crafting/RecipeManagerMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/item/crafting/RecipeManagerMixin.java @@ -33,8 +33,8 @@ import com.mojang.serialization.DynamicOps; import net.minecraft.core.HolderLookup; import net.minecraft.resources.FileToIdConverter; +import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeManager; @@ -81,13 +81,13 @@ public abstract class RecipeManagerMixin { @WrapOperation(method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)Lnet/minecraft/world/item/crafting/RecipeMap;", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/packs/resources/SimpleJsonResourceReloadListener;scanDirectory(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/resources/FileToIdConverter;Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/Codec;Ljava/util/Map;)V")) private void impl$onPrepare(final ResourceManager $$0, final FileToIdConverter $$1, final DynamicOps $$2, final Codec> $$3, - final Map> $$4, final Operation original) { - SortedMap> result = new TreeMap<>(); + final Map> $$4, final Operation original) { + SortedMap> result = new TreeMap<>(); original.call($$0, $$1, $$2, $$3, result); final RegistryHolderLogic registryHolder = ((SpongeRegistryHolder) $$0).registryHolder(); final Registry> registry = (Registry>) (Object) registryHolder.registry(RegistryTypes.RECIPE); result.forEach((k, v) -> registry.register((org.spongepowered.api.ResourceKey) (Object) k, v)); Launch.instance().lifecycle().processServerRegistries((RegistryHolder) $$0, Stream.of(registry)); - registry.streamEntries().forEach(e -> $$4.put((ResourceLocation) (Object) e.key(), e.value())); + registry.streamEntries().forEach(e -> $$4.put((Identifier) (Object) e.key(), e.value())); } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/LevelMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/LevelMixin.java index 56621141ff3..2b2139caaa4 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/LevelMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/LevelMixin.java @@ -28,27 +28,14 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.core.RegistryAccess; -import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; import net.minecraft.util.ProblemReporter; import net.minecraft.util.RandomSource; import net.minecraft.util.datafix.DataFixers; import net.minecraft.util.datafix.fixes.References; -import net.minecraft.world.DifficultyInstance; -import net.minecraft.world.entity.EntitySpawnReason; -import net.minecraft.world.entity.LightningBolt; -import net.minecraft.world.entity.Mob; -import net.minecraft.world.entity.decoration.ArmorStand; -import net.minecraft.world.entity.decoration.HangingEntity; -import net.minecraft.world.entity.decoration.Painting; -import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.entity.projectile.ThrownEnderpearl; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.TickingBlockEntity; import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.dimension.DimensionType; @@ -58,12 +45,9 @@ import net.minecraft.world.phys.AABB; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; -import org.spongepowered.api.ResourceKey; -import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.persistence.DataContainer; import org.spongepowered.api.entity.Entity; import org.spongepowered.api.entity.EntityType; -import org.spongepowered.api.entity.projectile.EnderPearl; import org.spongepowered.api.registry.RegistryTypes; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -73,13 +57,9 @@ import org.spongepowered.asm.mixin.injection.Coerce; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import org.spongepowered.common.SpongeCommon; -import org.spongepowered.common.accessor.world.entity.MobAccessor; -import org.spongepowered.common.accessor.world.entity.item.FallingBlockEntityAccessor; import org.spongepowered.common.bridge.data.VanishableBridge; import org.spongepowered.common.bridge.world.level.LevelBridge; import org.spongepowered.common.data.persistence.NBTTranslator; -import org.spongepowered.common.entity.projectile.UnknownProjectileSource; import org.spongepowered.common.util.Constants; import org.spongepowered.common.util.DataUtil; import org.spongepowered.math.vector.Vector3d; @@ -105,7 +85,6 @@ public abstract class LevelMixin implements LevelBridge, LevelAccessor { @Shadow public abstract net.minecraft.resources.ResourceKey shadow$dimension(); @Shadow public abstract DimensionType shadow$dimensionType(); @Shadow public abstract LevelChunk shadow$getChunkAt(BlockPos p_175726_1_); - @Shadow public abstract DifficultyInstance shadow$getCurrentDifficultyAt(BlockPos p_175649_1_); @Shadow public abstract boolean shadow$isRaining(); @Shadow public abstract net.minecraft.world.level.block.entity.@Nullable BlockEntity shadow$getBlockEntity(BlockPos p_175625_1_); @Shadow public abstract RegistryAccess shadow$registryAccess(); @@ -187,74 +166,6 @@ public abstract class LevelMixin implements LevelBridge, LevelAccessor { return (E) createdEntity; } - @Override - @SuppressWarnings("unchecked") - public E bridge$createEntity(final EntityType type, final Vector3d position, final boolean naturally) throws IllegalArgumentException, IllegalStateException { - if (type == net.minecraft.world.entity.EntityType.PLAYER) { - // Unable to construct these - throw new IllegalArgumentException("A Player cannot be created by the API!"); - } - - net.minecraft.world.entity.Entity entity = null; - final double x = position.x(); - final double y = position.y(); - final double z = position.z(); - final net.minecraft.world.level.Level thisWorld = (net.minecraft.world.level.Level) (Object) this; - // Not all entities have a single World parameter as their constructor - if (type == net.minecraft.world.entity.EntityType.LIGHTNING_BOLT) { - entity = net.minecraft.world.entity.EntityType.LIGHTNING_BOLT.create(thisWorld, EntitySpawnReason.EVENT); - entity.snapTo(x, y, z); - ((LightningBolt) entity).setVisualOnly(false); - } - // TODO - archetypes should solve the problem of calling the correct constructor - if (type == net.minecraft.world.entity.EntityType.ENDER_PEARL) { - final ArmorStand tempEntity = new ArmorStand(thisWorld, x, y, z); - tempEntity.setPos(tempEntity.getX(), tempEntity.getY() - tempEntity.getEyeHeight(), tempEntity.getZ()); - entity = new ThrownEnderpearl(thisWorld, tempEntity, Items.ENDER_PEARL.getDefaultInstance()); - ((EnderPearl) entity).offer(Keys.SHOOTER, UnknownProjectileSource.UNKNOWN); - } - // Some entities need to have non-null fields (and the easiest way to - // set them is to use the more specialised constructor). - if (type == net.minecraft.world.entity.EntityType.FALLING_BLOCK) { - entity = FallingBlockEntityAccessor.invoker$new(thisWorld, x, y, z, Blocks.SAND.defaultBlockState()); - } - if (type == net.minecraft.world.entity.EntityType.ITEM) { - entity = new ItemEntity(thisWorld, x, y, z, new ItemStack(Blocks.STONE)); - } - - if (entity == null) { - final ResourceKey key = (ResourceKey) (Object) SpongeCommon.vanillaRegistry(Registries.ENTITY_TYPE).getKey((net.minecraft.world.entity.EntityType) type); - try { - entity = ((net.minecraft.world.entity.EntityType) type).create(thisWorld, EntitySpawnReason.EVENT); - entity.snapTo(x, y, z); - } catch (final Exception e) { - throw new RuntimeException("There was an issue attempting to construct " + key, e); - } - } - - // TODO - replace this with an actual check - - if (entity instanceof HangingEntity) { - if (!((HangingEntity) entity).survives()) { - throw new IllegalArgumentException("Hanging entity does not survive at the given position: " + position); - } - } - - if (naturally && entity instanceof Mob) { - // Adding the default equipment - final DifficultyInstance difficulty = this.shadow$getCurrentDifficultyAt(new BlockPos((int) x, (int) y, (int) z)); - ((MobAccessor) entity).invoker$populateDefaultEquipmentSlots(this.random, difficulty); - } - - if (entity instanceof Painting) { - // This is default when art is null when reading from NBT, could - // choose a random art instead? - // TODO ? ((Painting) entity).motive = Motive.KEBAB; - } - - return (E) entity; - } - @Inject(method = { "getEntities(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;", "getEntities(Lnet/minecraft/world/level/entity/EntityTypeTest;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;)Ljava/util/List;", diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/NetherPortalBlockMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/NetherPortalBlockMixin.java index 8a39171148b..b96a261afa0 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/NetherPortalBlockMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/NetherPortalBlockMixin.java @@ -24,11 +24,11 @@ */ package org.spongepowered.common.mixin.core.world.level.block; -import net.minecraft.BlockUtil; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Vec3i; import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.BlockUtil; import net.minecraft.world.entity.ai.village.poi.PoiManager; import net.minecraft.world.entity.ai.village.poi.PoiRecord; import net.minecraft.world.entity.ai.village.poi.PoiTypes; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/entity/AbstractFurnaceBlockEntityMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/entity/AbstractFurnaceBlockEntityMixin.java index c3763b9df18..40a3a3a8be7 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/entity/AbstractFurnaceBlockEntityMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/entity/AbstractFurnaceBlockEntityMixin.java @@ -85,7 +85,7 @@ public abstract class AbstractFurnaceBlockEntityMixin extends BaseContainerBlock final SlotTransaction transaction = new SlotTransaction(((FurnaceBlockEntity) entity).inventory().slot(1).get(), fuel, shrinkedFuel); final var recipe = ((AbstractFurnaceBlockEntityMixin) (Object) entity).bridge$getCurrentRecipe(); final CookingEvent.ConsumeFuel event = SpongeEventFactory.createCookingEventConsumeFuel(cause, (FurnaceBlockEntity) entity, Optional.of(fuel), - recipe.map(r -> (CookingRecipe) r.value()), recipe.map(r -> (ResourceKey) (Object) r.id().location()), Collections.singletonList(transaction)); + recipe.map(r -> (CookingRecipe) r.value()), recipe.map(r -> (ResourceKey) (Object) r.id().identifier()), Collections.singletonList(transaction)); SpongeCommon.post(event); if (event.isCancelled()) { ((AbstractFurnaceBlockEntityMixin) (Object) entity).cookingTotalTime = 0; @@ -143,7 +143,7 @@ public abstract class AbstractFurnaceBlockEntityMixin extends BaseContainerBlock final Cause cause = PhaseTracker.getInstance().currentCause(); final var recipe = this.bridge$getCurrentRecipe(); final CookingEvent.Interrupt event = SpongeEventFactory.createCookingEventInterrupt(cause, (FurnaceBlockEntity) this, Optional.of(fuel), - recipe.map(r -> (CookingRecipe) r.value()), recipe.map(r -> (ResourceKey) (Object) r.id().location())); + recipe.map(r -> (CookingRecipe) r.value()), recipe.map(r -> (ResourceKey) (Object) r.id().identifier())); SpongeCommon.post(event); } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/entity/CampfireBlockEntityMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/entity/CampfireBlockEntityMixin.java index af2c801e379..157515157e2 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/entity/CampfireBlockEntityMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/entity/CampfireBlockEntityMixin.java @@ -89,7 +89,7 @@ public abstract class CampfireBlockEntityMixin { final ItemStackSnapshot stack = ItemStackUtil.snapshotOf(mixinSelf.items.get(i)); final RecipeHolder recipe = mixinSelf.impl$cookingRecipe[i]; final CookingEvent.Tick event = SpongeEventFactory.createCookingEventTick(cause, (Campfire) self, stack, Optional.empty(), - Optional.ofNullable(recipe).map(r -> (CookingRecipe) r.value()), Optional.ofNullable(recipe).map(r -> (ResourceKey) (Object) r.id().location())); + Optional.ofNullable(recipe).map(r -> (CookingRecipe) r.value()), Optional.ofNullable(recipe).map(r -> (ResourceKey) (Object) r.id().identifier())); SpongeCommon.post(event); if (event.isCancelled()) { mixinSelf.cookingProgress[i]--; @@ -109,7 +109,7 @@ public abstract class CampfireBlockEntityMixin { final SlotTransaction transaction = new SlotTransaction(((Campfire) self).inventory().slot(i).get(), ItemStackUtil.snapshotOf(itemStack1), ItemStackSnapshot.empty()); final RecipeHolder recipe = mixinSelf.impl$cookingRecipe[i]; final CookingEvent.Finish event = SpongeEventFactory.createCookingEventFinish(cause, (Campfire) self, - Optional.empty(), Optional.ofNullable(recipe).map(r -> (CookingRecipe) r.value()), Optional.ofNullable(recipe).map(r -> (ResourceKey) (Object) r.id().location()), + Optional.empty(), Optional.ofNullable(recipe).map(r -> (CookingRecipe) r.value()), Optional.ofNullable(recipe).map(r -> (ResourceKey) (Object) r.id().identifier()), Collections.singletonList(transaction)); SpongeCommon.post(event); mixinSelf.impl$cookingRecipe[i] = null; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/entity/CommandBlockEntityMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/entity/CommandBlockEntityMixin.java index 549e45c8cb1..5d0547ace32 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/entity/CommandBlockEntityMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/entity/CommandBlockEntityMixin.java @@ -25,6 +25,7 @@ package org.spongepowered.common.mixin.core.world.level.block.entity; import net.minecraft.commands.CommandSourceStack; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.BaseCommandBlock; import net.minecraft.world.level.block.entity.CommandBlockEntity; import org.spongepowered.api.event.Cause; @@ -33,15 +34,18 @@ import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.common.SpongeCommon; import org.spongepowered.common.accessor.world.level.BaseCommandBlockAccessor; import org.spongepowered.common.bridge.commands.CommandSourceProviderBridge; import org.spongepowered.common.bridge.permissions.SubjectBridge; // TODO: dualspiral - should this go on the child CommandBlockLogic? @Mixin(CommandBlockEntity.class) -public abstract class CommandBlockEntityMixin implements SubjectBridge, CommandSourceProviderBridge { +public abstract class CommandBlockEntityMixin extends BlockEntityMixin implements SubjectBridge, CommandSourceProviderBridge { + // @formatter:off @Shadow @Final private BaseCommandBlock commandBlock; + // @formatter:on @Override public String bridge$getSubjectCollectionIdentifier() { @@ -55,7 +59,13 @@ public abstract class CommandBlockEntityMixin implements SubjectBridge, CommandS @Override public CommandSourceStack bridge$getCommandSource(final Cause cause) { - return this.commandBlock.createCommandSourceStack((((BaseCommandBlockAccessor) this.commandBlock).invoker$createSource())); + if (this.level instanceof ServerLevel sl) { + return this.commandBlock.createCommandSourceStack(sl, (((BaseCommandBlockAccessor) this.commandBlock).invoker$createSource(sl))); + } + return this.commandBlock.createCommandSourceStack( + SpongeCommon.server().overworld(), + (((BaseCommandBlockAccessor) this.commandBlock).invoker$createSource(SpongeCommon.server().overworld())) + ); } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/entity/CommandBlockEntity_Mixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/entity/CommandBlockEntity_Mixin.java index 3d54e86e9f4..c3ab676dcb3 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/entity/CommandBlockEntity_Mixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/block/entity/CommandBlockEntity_Mixin.java @@ -24,12 +24,19 @@ */ package org.spongepowered.common.mixin.core.world.level.block.entity; +import net.kyori.adventure.audience.MessageType; +import net.kyori.adventure.identity.Identity; +import net.kyori.adventure.text.Component; +import net.minecraft.commands.CommandSourceStack; import net.minecraft.world.level.block.entity.CommandBlockEntity; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.spongepowered.api.event.Cause; import org.spongepowered.api.service.permission.Subject; import org.spongepowered.api.service.permission.SubjectProxy; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.common.adventure.SpongeAdventure; import org.spongepowered.common.mixin.core.world.BaseCommandBlockMixin; @Mixin(targets = "net.minecraft.world.level.block.entity.CommandBlockEntity$1") @@ -43,4 +50,25 @@ public abstract class CommandBlockEntity_Mixin extends BaseCommandBlockMixin imp public Subject subject() { return (Subject) this.this$0; } + + @Override + public CommandSourceStack bridge$getCommandSource(final Cause cause) { + if (!(this.this$0.getLevel() instanceof net.minecraft.server.level.ServerLevel serverLevel)) { + return null; + } + return this.createCommandSourceStack(serverLevel, this.shadow$createSource(serverLevel)); + } + + @Override + @SuppressWarnings({"deprecation", "UnstableApiUsage"}) + public void sendMessage(final @NonNull Identity identity, final @NonNull Component message, final @NonNull MessageType type) { + if (!(this.this$0.getLevel() instanceof net.minecraft.server.level.ServerLevel serverLevel)) { + return; + } + final var source = this.shadow$createSource(serverLevel); + if (source == null) { + return; + } + source.sendSystemMessage(SpongeAdventure.asVanilla(message)); + } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/border/WorldBorderMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/border/WorldBorderMixin.java index 451758d8dba..9c9e020ec12 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/border/WorldBorderMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/border/WorldBorderMixin.java @@ -32,6 +32,7 @@ import org.spongepowered.api.event.world.ChangeWorldBorderEvent; import org.spongepowered.api.world.server.ServerWorld; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -82,7 +83,7 @@ public abstract class WorldBorderMixin implements WorldBorderBridge { } @Inject(method = "lerpSizeBetween", at = @At(value = "HEAD"), cancellable = true) - private void impl$onLerping(final double initial, final double target, final long milliseconds, final CallbackInfo ci) { + private void impl$onLerping(final double initial, final double target, final long milliseconds, final long delay, final CallbackInfo ci) { if (this.impl$fireEvent) { final Supplier proposed = () -> new SpongeWorldBorderBuilder().from(this) @@ -190,7 +191,7 @@ public abstract class WorldBorderMixin implements WorldBorderBridge { @Override public org.spongepowered.api.world.border.@Nullable WorldBorder bridge$applyFrom(final org.spongepowered.api.world.border.WorldBorder worldBorder) { if (!this.impl$fireEvent) { - ((WorldBorder) (Object) this).applySettings((WorldBorder.Settings) (Object) worldBorder); + this.impl$applySettings((WorldBorder.Settings) (Object) worldBorder); return worldBorder; } @@ -208,9 +209,24 @@ public abstract class WorldBorderMixin implements WorldBorderBridge { } this.impl$fireEvent = false; - ((WorldBorder) (Object) this).applySettings((WorldBorder.Settings) (Object) toSet); + this.impl$applySettings((WorldBorder.Settings) (Object) worldBorder); this.impl$fireEvent = true; return toSet; } + @Unique + private void impl$applySettings(WorldBorder.Settings worldBorder) { + ((WorldBorder) (Object) this).setCenter(worldBorder.centerX(), worldBorder.centerZ()); + ((WorldBorder) (Object) this).setDamagePerBlock(worldBorder.damagePerBlock()); + ((WorldBorder) (Object) this).setSafeZone(worldBorder.safeZone()); + ((WorldBorder) (Object) this).setWarningBlocks(worldBorder.warningBlocks()); + ((WorldBorder) (Object) this).setWarningTime(worldBorder.warningTime()); + if (worldBorder.lerpTime() > 0L) { + // TODO - figure out how to get the appropriate game time + ((WorldBorder) (Object) this).lerpSizeBetween(worldBorder.size(), worldBorder.lerpTarget(), worldBorder.lerpTime(), SpongeCommon.server().overworld().getGameTime()); + } else { + ((WorldBorder) (Object) this).setSize(worldBorder.size()); + } + } + } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/chunk/ChunkStatusTasksMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/chunk/ChunkStatusTasksMixin.java index 0575009f31d..1f69cbbc2d0 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/chunk/ChunkStatusTasksMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/chunk/ChunkStatusTasksMixin.java @@ -101,7 +101,7 @@ static CompletableFuture generateBiomes(final WorldGenContext conte final Vector3i chunkPos = VecHelper.toVector3i(levelChunk.getPos()); if (ShouldFire.CHUNK_EVENT_BLOCKS_LOAD) { final ChunkEvent.Blocks.Load loadEvent = SpongeEventFactory.createChunkEventBlocksLoad(PhaseTracker.getInstance().currentCause(), - ((BlockChunk) levelChunk), chunkPos, (ResourceKey) (Object) levelChunk.getLevel().dimension().location()); + ((BlockChunk) levelChunk), chunkPos, (ResourceKey) (Object) levelChunk.getLevel().dimension().identifier()); SpongeCommon.post(loadEvent); } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/chunk/storage/EntityStorageMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/chunk/storage/EntityStorageMixin.java index 5eecfb80900..bf43ea2cd64 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/chunk/storage/EntityStorageMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/chunk/storage/EntityStorageMixin.java @@ -77,7 +77,7 @@ public abstract class EntityStorageMixin { final Vector3i chunkPos = VecHelper.toVector3i($$0x); final SpongeEntityChunk entities = new SpongeEntityChunk(this.level, chunkPos, cir.getReturnValue().getEntities().collect(Collectors.toList())); final ChunkEvent.Entities.Load loadEvent = SpongeEventFactory.createChunkEventEntitiesLoad(PhaseTracker.getInstance().currentCause(), - entities, chunkPos, (ResourceKey) (Object) this.level.dimension().location()); + entities, chunkPos, (ResourceKey) (Object) this.level.dimension().identifier()); SpongeCommon.post(loadEvent); @@ -94,7 +94,7 @@ public abstract class EntityStorageMixin { final SpongeEntityChunk entities = new SpongeEntityChunk(this.level, chunkPos, $$0.getEntities().collect(Collectors.toList())); final ChunkEvent.Entities.Save.Pre saveEvent = SpongeEventFactory.createChunkEventEntitiesSavePre(PhaseTracker.getInstance().currentCause(), - entities, chunkPos, (ResourceKey) (Object) this.level.dimension().location()); + entities, chunkPos, (ResourceKey) (Object) this.level.dimension().identifier()); if (SpongeCommon.post(saveEvent)) { return null; diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/chunk/storage/IOWorkerMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/chunk/storage/IOWorkerMixin.java index 9bac19268b8..dae1f194012 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/chunk/storage/IOWorkerMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/chunk/storage/IOWorkerMixin.java @@ -101,7 +101,7 @@ public abstract class IOWorkerMixin implements IOWorkerBridge { if (ShouldFire.CHUNK_EVENT_BLOCKS_SAVE_POST) { final Vector3i chunkPos = new Vector3i(param0.x, 0, param0.z); final ChunkEvent.Blocks.Save.Post postSave = SpongeEventFactory.createChunkEventBlocksSavePost(PhaseTracker.getInstance().currentCause(), chunkPos, - (org.spongepowered.api.ResourceKey) (Object) this.impl$dimension.location()); + (org.spongepowered.api.ResourceKey) (Object) this.impl$dimension.identifier()); SpongeCommon.post(postSave); } } @@ -109,7 +109,7 @@ else if (this.impl$type == SpongeIOWorkerType.ENTITY) { if (ShouldFire.CHUNK_EVENT_ENTITIES_SAVE_POST) { final Vector3i chunkPos = new Vector3i(param0.x, 0, param0.z); final ChunkEvent.Entities.Save.Post postSave = SpongeEventFactory.createChunkEventEntitiesSavePost(PhaseTracker.getInstance().currentCause(), chunkPos, - (org.spongepowered.api.ResourceKey) (Object) this.impl$dimension.location()); + (org.spongepowered.api.ResourceKey) (Object) this.impl$dimension.identifier()); SpongeCommon.post(postSave); } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/dimension/DimensionTypeMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/dimension/DimensionTypeMixin.java index 0c8ac09926c..5b479180938 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/dimension/DimensionTypeMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/dimension/DimensionTypeMixin.java @@ -58,7 +58,7 @@ public abstract class DimensionTypeMixin implements DimensionTypeBridge { return this.impl$createDragonFight; } - @Redirect(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/ExtraCodecs;catchDecoderException(Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec;")) + @Redirect(method = "createDirectCodec", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/ExtraCodecs;catchDecoderException(Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec;")) private static Codec impl$onWrapCodec(final Codec codec) { return ExtraCodecs.catchDecoderException(SpongeDimensionTypes.injectCodec(codec)); } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/levelgen/structure/LegacyStructureDataHandlerMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/levelgen/structure/LegacyStructureDataHandlerMixin.java index e93a9d76da2..f9c4861699d 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/levelgen/structure/LegacyStructureDataHandlerMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/levelgen/structure/LegacyStructureDataHandlerMixin.java @@ -24,15 +24,18 @@ */ package org.spongepowered.common.mixin.core.world.level.levelgen.structure; +import com.mojang.datafixers.DataFixer; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.Level; +import net.minecraft.world.level.chunk.storage.LegacyTagFixer; import net.minecraft.world.level.levelgen.structure.LegacyStructureDataHandler; import net.minecraft.world.level.storage.DimensionDataStorage; -import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.common.hooks.PlatformHooks; +import java.util.function.Supplier; + @Mixin(LegacyStructureDataHandler.class) public abstract class LegacyStructureDataHandlerMixin { @@ -41,7 +44,11 @@ public abstract class LegacyStructureDataHandlerMixin { * @reason Allow the platform to determine how to create the legacy structure data updater */ @Overwrite - public static LegacyStructureDataHandler getLegacyStructureHandler(final ResourceKey dimension, final @Nullable DimensionDataStorage savedData) { - return PlatformHooks.INSTANCE.getWorldGenerationHooks().createLegacyStructureDataUtil(dimension, savedData); + public static Supplier getLegacyTagFixer( + final ResourceKey dimension, + final Supplier savedData, + final DataFixer fixer + ) { + return () -> PlatformHooks.INSTANCE.getWorldGenerationHooks().createLegacyStructureDataUtil(dimension, savedData.get(), fixer); } } diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/storage/PlayerDataStorageMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/storage/PlayerDataStorageMixin.java index b695562105d..5853fe9133d 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/storage/PlayerDataStorageMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/storage/PlayerDataStorageMixin.java @@ -48,7 +48,7 @@ public abstract class PlayerDataStorageMixin { @Inject(method = "save", at = @At(value = "INVOKE", - target = "Lnet/minecraft/Util;safeReplaceFile(Ljava/nio/file/Path;Ljava/nio/file/Path;Ljava/nio/file/Path;)V", + target = "Lnet/minecraft/util/Util;safeReplaceFile(Ljava/nio/file/Path;Ljava/nio/file/Path;Ljava/nio/file/Path;)V", shift = At.Shift.AFTER)) private void impl$saveSpongePlayerData(final Player player, final CallbackInfo callbackInfo) { ((SpongeServer) SpongeCommon.server()).getPlayerDataManager().deleteLegacyPlayerData((ServerPlayer) player); diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/storage/PrimaryLevelDataMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/storage/PrimaryLevelDataMixin.java index bee0076bc00..7f91e1ac0d6 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/world/level/storage/PrimaryLevelDataMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/world/level/storage/PrimaryLevelDataMixin.java @@ -42,8 +42,8 @@ import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.network.protocol.game.ClientboundChangeDifficultyPacket; +import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Difficulty; @@ -52,6 +52,7 @@ import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.dimension.DimensionType; import net.minecraft.world.level.dimension.LevelStem; +import net.minecraft.world.level.gamerules.GameRules; import net.minecraft.world.level.levelgen.WorldDimensions; import net.minecraft.world.level.levelgen.WorldGenSettings; import net.minecraft.world.level.levelgen.WorldOptions; @@ -67,7 +68,6 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import org.spongepowered.common.accessor.server.MinecraftServerAccessor; import org.spongepowered.common.accessor.world.level.LevelSettingsAccessor; import org.spongepowered.common.bridge.data.DataCompoundHolder; import org.spongepowered.common.bridge.world.level.dimension.LevelStemBridge; @@ -291,7 +291,7 @@ public abstract class PrimaryLevelDataMixin implements ServerLevelData, WorldDat } else if (server.isSingleplayer()) { level.setSpawnSettings(difficulty != Difficulty.PEACEFUL); } else { - level.setSpawnSettings(((MinecraftServerAccessor) server).invoker$isSpawningMonsters()); + level.setSpawnSettings(server.getWorldData().getGameRules().get(GameRules.SPAWN_MONSTERS)); } level.players().forEach(player -> player.connection.send(new ClientboundChangeDifficultyPacket(difficulty, isLocked))); @@ -312,7 +312,7 @@ public abstract class PrimaryLevelDataMixin implements ServerLevelData, WorldDat public void bridge$readSpongeLevelData(final Dynamic dynamic) { dynamic.get(Constants.Sponge.Data.V2.SPONGE_DATA).get().ifSuccess(v2 -> { v2.get(Constants.Sponge.World.UNIQUE_ID).read(UUIDUtil.CODEC).result().ifPresent(this.impl$spongeData::setUniqueId); - v2.get(Constants.Sponge.World.WORLD_KEY).read(ResourceLocation.CODEC).result() + v2.get(Constants.Sponge.World.WORLD_KEY).read(Identifier.CODEC).result() .map(org.spongepowered.api.ResourceKey.class::cast).ifPresent(this.impl$spongeData::setKey); v2.get(Constants.Map.MAP_UUID_INDEX).readMap(Codec.STRING, UUIDUtil.CODEC).result().ifPresent(value -> { @@ -399,7 +399,7 @@ public String toString() { .listElements() .collect(Collectors.toMap(Holder.Reference::key, Holder.Reference::value)); if (this.impl$dimensionType != null && this.impl$chunkGenerator != null) { - dimensions.computeIfAbsent(ResourceKey.create(Registries.LEVEL_STEM, (ResourceLocation) (Object) this.impl$spongeData.key()), + dimensions.computeIfAbsent(ResourceKey.create(Registries.LEVEL_STEM, (Identifier) (Object) this.impl$spongeData.key()), $ -> new LevelStem($$2.lookupOrThrow(Registries.DIMENSION_TYPE).wrapAsHolder(this.impl$dimensionType), this.impl$chunkGenerator)); } return WorldGenSettings.encode($$0, $$1, new WorldDimensions(dimensions)); diff --git a/src/mixins/java/org/spongepowered/common/mixin/entityactivation/entity/projectile/AbstractArrowEntityMixin_EntityActivation.java b/src/mixins/java/org/spongepowered/common/mixin/entityactivation/entity/projectile/arrow/AbstractArrowEntityMixin_EntityActivation.java similarity index 95% rename from src/mixins/java/org/spongepowered/common/mixin/entityactivation/entity/projectile/AbstractArrowEntityMixin_EntityActivation.java rename to src/mixins/java/org/spongepowered/common/mixin/entityactivation/entity/projectile/arrow/AbstractArrowEntityMixin_EntityActivation.java index c0bdbb05971..602bccdb92a 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/entityactivation/entity/projectile/AbstractArrowEntityMixin_EntityActivation.java +++ b/src/mixins/java/org/spongepowered/common/mixin/entityactivation/entity/projectile/arrow/AbstractArrowEntityMixin_EntityActivation.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.entityactivation.entity.projectile; +package org.spongepowered.common.mixin.entityactivation.entity.projectile.arrow; -import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.projectile.arrow.AbstractArrow; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.common.mixin.entityactivation.entity.EntityMixin_EntityActivation; diff --git a/src/mixins/java/org/spongepowered/common/mixin/inventory/api/TraitMixin_Viewable_Inventory_API.java b/src/mixins/java/org/spongepowered/common/mixin/inventory/api/TraitMixin_Viewable_Inventory_API.java index 5d5e2f794fa..a1b2efe37c7 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/inventory/api/TraitMixin_Viewable_Inventory_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/inventory/api/TraitMixin_Viewable_Inventory_API.java @@ -26,10 +26,10 @@ import net.minecraft.world.CompoundContainer; import net.minecraft.world.Container; -import net.minecraft.world.entity.npc.AbstractVillager; import net.minecraft.world.entity.npc.ClientSideMerchant; +import net.minecraft.world.entity.npc.villager.AbstractVillager; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.entity.vehicle.AbstractMinecartContainer; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecartContainer; import net.minecraft.world.inventory.PlayerEnderChestContainer; import net.minecraft.world.level.block.entity.BaseContainerBlockEntity; import net.minecraft.world.level.block.entity.LecternBlockEntity; diff --git a/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/animal/horse/AbstractHorseMixin_Carrier_Inventory_API.java b/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/animal/equine/AbstractHorseMixin_Carrier_Inventory_API.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/animal/horse/AbstractHorseMixin_Carrier_Inventory_API.java rename to src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/animal/equine/AbstractHorseMixin_Carrier_Inventory_API.java index 3e0ab03763a..5088f481a98 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/animal/horse/AbstractHorseMixin_Carrier_Inventory_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/animal/equine/AbstractHorseMixin_Carrier_Inventory_API.java @@ -22,10 +22,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.inventory.api.world.entity.animal.horse; +package org.spongepowered.common.mixin.inventory.api.world.entity.animal.equine; import net.minecraft.world.SimpleContainer; -import net.minecraft.world.entity.animal.horse.AbstractHorse; +import net.minecraft.world.entity.animal.equine.AbstractHorse; import org.spongepowered.api.item.inventory.Carrier; import org.spongepowered.api.item.inventory.type.CarriedInventory; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/monster/PillagerMixin_Carrier_Inventory_API.java b/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/monster/illager/PillagerMixin_Carrier_Inventory_API.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/monster/PillagerMixin_Carrier_Inventory_API.java rename to src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/monster/illager/PillagerMixin_Carrier_Inventory_API.java index 7b3da8a4f4c..b631114f78e 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/monster/PillagerMixin_Carrier_Inventory_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/monster/illager/PillagerMixin_Carrier_Inventory_API.java @@ -22,10 +22,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.inventory.api.world.entity.monster; +package org.spongepowered.common.mixin.inventory.api.world.entity.monster.illager; import net.minecraft.world.SimpleContainer; -import net.minecraft.world.entity.monster.Pillager; +import net.minecraft.world.entity.monster.illager.Pillager; import org.spongepowered.api.item.inventory.Carrier; import org.spongepowered.api.item.inventory.type.CarriedInventory; import org.spongepowered.asm.mixin.Final; diff --git a/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/npc/AbstractVillagerMixin_Carrier_Inventory_API.java b/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/npc/villager/AbstractVillagerMixin_Carrier_Inventory_API.java similarity index 96% rename from src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/npc/AbstractVillagerMixin_Carrier_Inventory_API.java rename to src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/npc/villager/AbstractVillagerMixin_Carrier_Inventory_API.java index 31ebb802dae..9a80f099b20 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/npc/AbstractVillagerMixin_Carrier_Inventory_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/npc/villager/AbstractVillagerMixin_Carrier_Inventory_API.java @@ -22,10 +22,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.inventory.api.world.entity.npc; +package org.spongepowered.common.mixin.inventory.api.world.entity.npc.villager; import net.minecraft.world.SimpleContainer; -import net.minecraft.world.entity.npc.AbstractVillager; +import net.minecraft.world.entity.npc.villager.AbstractVillager; import org.spongepowered.api.item.inventory.Carrier; import org.spongepowered.api.item.inventory.type.CarriedInventory; import org.spongepowered.asm.mixin.Final; diff --git a/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/vehicle/AbstractMinecartContainerMixin_Carried_Inventory_API.java b/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/vehicle/minecart/AbstractMinecartContainerMixin_Carried_Inventory_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/vehicle/AbstractMinecartContainerMixin_Carried_Inventory_API.java rename to src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/vehicle/minecart/AbstractMinecartContainerMixin_Carried_Inventory_API.java index 66aea21b821..59686c3b50d 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/vehicle/AbstractMinecartContainerMixin_Carried_Inventory_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/vehicle/minecart/AbstractMinecartContainerMixin_Carried_Inventory_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.inventory.api.world.entity.vehicle; +package org.spongepowered.common.mixin.inventory.api.world.entity.vehicle.minecart; -import net.minecraft.world.entity.vehicle.AbstractMinecartContainer; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecartContainer; import org.spongepowered.api.entity.vehicle.minecart.carrier.CarrierMinecart; import org.spongepowered.api.item.inventory.type.CarriedInventory; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/vehicle/AbstractMinecartContainerMixin_Carrier_Inventory_API.java b/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/vehicle/minecart/AbstractMinecartContainerMixin_Carrier_Inventory_API.java similarity index 94% rename from src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/vehicle/AbstractMinecartContainerMixin_Carrier_Inventory_API.java rename to src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/vehicle/minecart/AbstractMinecartContainerMixin_Carrier_Inventory_API.java index c770d7e904c..dace7bfd2e5 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/vehicle/AbstractMinecartContainerMixin_Carrier_Inventory_API.java +++ b/src/mixins/java/org/spongepowered/common/mixin/inventory/api/world/entity/vehicle/minecart/AbstractMinecartContainerMixin_Carrier_Inventory_API.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.common.mixin.inventory.api.world.entity.vehicle; +package org.spongepowered.common.mixin.inventory.api.world.entity.vehicle.minecart; -import net.minecraft.world.entity.vehicle.AbstractMinecartContainer; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecartContainer; import org.spongepowered.api.entity.vehicle.minecart.carrier.CarrierMinecart; import org.spongepowered.api.item.inventory.Carrier; import org.spongepowered.api.item.inventory.type.CarriedInventory; diff --git a/src/mixins/java/org/spongepowered/common/mixin/inventory/event/inventory/container/EnchantmentContainerMixin_Inventory.java b/src/mixins/java/org/spongepowered/common/mixin/inventory/event/inventory/container/EnchantmentContainerMixin_Inventory.java index e3a0315872f..f0b824647be 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/inventory/event/inventory/container/EnchantmentContainerMixin_Inventory.java +++ b/src/mixins/java/org/spongepowered/common/mixin/inventory/event/inventory/container/EnchantmentContainerMixin_Inventory.java @@ -93,7 +93,7 @@ public abstract class EnchantmentContainerMixin_Inventory { // enchantItem lambda @Inject(method = "lambda$clickMenuButton$1", cancellable = true, - at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;awardStat(Lnet/minecraft/resources/ResourceLocation;)V"), require = 1) + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;awardStat(Lnet/minecraft/resources/Identifier;)V"), require = 1) private void impl$afterEnchantItem(final ItemStack itemstack, final int id, final Player playerIn, final int i, final ItemStack itemstack1, final Level arg5, final BlockPos arg6, final CallbackInfo ci) { final ItemStackSnapshot newItem = ItemStackUtil.snapshotOf(this.enchantSlots.getItem(0)); final ItemStackSnapshot newLapis = ItemStackUtil.snapshotOf(this.enchantSlots.getItem(1)); diff --git a/src/mixins/java/org/spongepowered/common/mixin/inventory/event/server/level/ServerPlayerMixin_Inventory.java b/src/mixins/java/org/spongepowered/common/mixin/inventory/event/server/level/ServerPlayerMixin_Inventory.java index 6476ad1c7ba..5b2270743fa 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/inventory/event/server/level/ServerPlayerMixin_Inventory.java +++ b/src/mixins/java/org/spongepowered/common/mixin/inventory/event/server/level/ServerPlayerMixin_Inventory.java @@ -29,7 +29,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.llamalad7.mixinextras.sugar.Cancellable; import net.minecraft.network.protocol.Packet; -import net.minecraft.network.protocol.game.ClientboundHorseScreenOpenPacket; +import net.minecraft.network.protocol.game.ClientboundMountScreenOpenPacket; import net.minecraft.network.protocol.game.ClientboundOpenScreenPacket; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -40,7 +40,7 @@ import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.animal.horse.AbstractHorse; +import net.minecraft.world.entity.animal.equine.AbstractHorse; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; @@ -62,7 +62,6 @@ 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 org.spongepowered.common.SpongeCommon; import org.spongepowered.common.bridge.world.entity.EntityBridge; import org.spongepowered.common.bridge.world.entity.player.PlayerInventoryBridge; @@ -121,17 +120,17 @@ public abstract class ServerPlayerMixin_Inventory extends PlayerMixin_Inventory } } - @Inject(method = "drop(Z)Z", + @Inject(method = "drop(Z)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Inventory;removeFromSelected(Z)Lnet/minecraft/world/item/ItemStack;")) - protected void impl$beforeRemoveItem(final boolean param0, final CallbackInfoReturnable cir) { + protected void impl$beforeRemoveItem(final boolean param0, final CallbackInfo cir) { final PhaseContext<@NonNull ?> context = PhaseTracker.getWorldInstance(this.shadow$level()).getPhaseContext(); final TransactionalCaptureSupplier transactor = context.getTransactor(); this.inventory$effectTransactor = transactor.logDropFromPlayerInventory((ServerPlayer) (Object) this, param0); } - @Inject(method = "drop(Z)Z", + @Inject(method = "drop(Z)V", at = @At(value = "RETURN")) - protected void impl$onPlayerDrop(final boolean param0, final CallbackInfoReturnable cir) { + protected void impl$onPlayerDrop(final boolean param0, final CallbackInfo cir) { try (final EffectTransactor ignored = this.inventory$effectTransactor) { this.containerMenu.broadcastChanges(); // for capture } finally { @@ -215,7 +214,7 @@ public abstract class ServerPlayerMixin_Inventory extends PlayerMixin_Inventory method = "openHorseInventory", at = @At( value = "NEW", - target = "(ILnet/minecraft/world/entity/player/Inventory;Lnet/minecraft/world/Container;Lnet/minecraft/world/entity/animal/horse/AbstractHorse;I)Lnet/minecraft/world/inventory/HorseInventoryMenu;" + target = "(ILnet/minecraft/world/entity/player/Inventory;Lnet/minecraft/world/Container;Lnet/minecraft/world/entity/animal/equine/AbstractHorse;I)Lnet/minecraft/world/inventory/HorseInventoryMenu;" ) ) private HorseInventoryMenu impl$transactHorseInventoryMenuCreationWithEffect( @@ -227,7 +226,7 @@ public abstract class ServerPlayerMixin_Inventory extends PlayerMixin_Inventory ci.cancel(); return menu; } - this.connection.send(new ClientboundHorseScreenOpenPacket(menu.containerId, $$4, $$3.getId())); + this.connection.send(new ClientboundMountScreenOpenPacket(menu.containerId, $$4, $$3.getId())); return menu; } diff --git a/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/TraitMixin_ContainerBridge_Inventory.java b/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/TraitMixin_ContainerBridge_Inventory.java index 240d7dbafec..36727641425 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/TraitMixin_ContainerBridge_Inventory.java +++ b/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/TraitMixin_ContainerBridge_Inventory.java @@ -27,6 +27,7 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.AbstractFurnaceMenu; +import net.minecraft.world.inventory.AbstractMountInventoryMenu; import net.minecraft.world.inventory.BeaconMenu; import net.minecraft.world.inventory.BrewingStandMenu; import net.minecraft.world.inventory.ChestMenu; @@ -34,7 +35,6 @@ import net.minecraft.world.inventory.DispenserMenu; import net.minecraft.world.inventory.EnchantmentMenu; import net.minecraft.world.inventory.HopperMenu; -import net.minecraft.world.inventory.HorseInventoryMenu; import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.inventory.ItemCombinerMenu; import net.minecraft.world.inventory.MenuType; @@ -60,7 +60,7 @@ ItemCombinerMenu.class, BrewingStandMenu.class, BeaconMenu.class, - HorseInventoryMenu.class, + AbstractMountInventoryMenu.class, MerchantMenu.class, InventoryMenu.class, CraftingMenu.class diff --git a/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/TraitMixin_InventoryBridge_Inventory.java b/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/TraitMixin_InventoryBridge_Inventory.java index 259d84bbe9d..bca9ba50105 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/TraitMixin_InventoryBridge_Inventory.java +++ b/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/TraitMixin_InventoryBridge_Inventory.java @@ -30,7 +30,7 @@ import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.decoration.ArmorStand; import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.entity.vehicle.AbstractMinecartContainer; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecartContainer; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.MerchantContainer; import net.minecraft.world.inventory.ResultContainer; diff --git a/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/TraitMixin_ViewableBridge_Inventory.java b/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/TraitMixin_ViewableBridge_Inventory.java index 69fa5771b1e..743832b4643 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/TraitMixin_ViewableBridge_Inventory.java +++ b/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/TraitMixin_ViewableBridge_Inventory.java @@ -26,9 +26,9 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.CompoundContainer; -import net.minecraft.world.entity.npc.AbstractVillager; import net.minecraft.world.entity.npc.ClientSideMerchant; -import net.minecraft.world.entity.vehicle.AbstractMinecartContainer; +import net.minecraft.world.entity.npc.villager.AbstractVillager; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecartContainer; import net.minecraft.world.inventory.PlayerEnderChestContainer; import net.minecraft.world.level.block.entity.BaseContainerBlockEntity; import net.minecraft.world.level.block.entity.LecternBlockEntity; diff --git a/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/world/TraitMixin_TrackedMenuBridge_Inventory.java b/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/world/TraitMixin_TrackedMenuBridge_Inventory.java index 22771af4874..6a27e19b411 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/world/TraitMixin_TrackedMenuBridge_Inventory.java +++ b/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/world/TraitMixin_TrackedMenuBridge_Inventory.java @@ -27,8 +27,8 @@ import net.minecraft.world.CompoundContainer; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.entity.vehicle.AbstractMinecartContainer; -import net.minecraft.world.entity.vehicle.ChestBoat; +import net.minecraft.world.entity.vehicle.boat.ChestBoat; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecartContainer; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.MerchantContainer; import net.minecraft.world.inventory.ResultContainer; diff --git a/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/world/inventory/HorseInventoryMenuMixin_TrackedMenuBridge_Inventory.java b/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/world/inventory/HorseInventoryMenuMixin_TrackedMenuBridge_Inventory.java index 4566094a93a..c82724ff7a6 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/world/inventory/HorseInventoryMenuMixin_TrackedMenuBridge_Inventory.java +++ b/src/mixins/java/org/spongepowered/common/mixin/inventory/impl/world/inventory/HorseInventoryMenuMixin_TrackedMenuBridge_Inventory.java @@ -25,7 +25,7 @@ package org.spongepowered.common.mixin.inventory.impl.world.inventory; import net.minecraft.world.Container; -import net.minecraft.world.entity.animal.horse.AbstractHorse; +import net.minecraft.world.entity.animal.equine.AbstractHorse; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.HorseInventoryMenu; diff --git a/src/mixins/java/org/spongepowered/common/mixin/ipforward/network/protocol/game/ClientboundCommandsPacket_ArgumentNodeStub_IpForward.java b/src/mixins/java/org/spongepowered/common/mixin/ipforward/network/protocol/game/ClientboundCommandsPacket_ArgumentNodeStub_IpForward.java index bacf15322f2..eb926802337 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/ipforward/network/protocol/game/ClientboundCommandsPacket_ArgumentNodeStub_IpForward.java +++ b/src/mixins/java/org/spongepowered/common/mixin/ipforward/network/protocol/game/ClientboundCommandsPacket_ArgumentNodeStub_IpForward.java @@ -29,7 +29,7 @@ import net.minecraft.commands.synchronization.ArgumentTypeInfo; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.checkerframework.checker.nullness.qual.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -59,7 +59,7 @@ public final class ClientboundCommandsPacket_ArgumentNodeStub_IpForward { @Inject(method = "serializeCap(Lnet/minecraft/network/FriendlyByteBuf;Lnet/minecraft/commands/synchronization/ArgumentTypeInfo;Lnet/minecraft/commands/synchronization/ArgumentTypeInfo$Template;)V", at = @At("HEAD"), cancellable = true) private static , T extends ArgumentTypeInfo.Template> void ipForward$onSerializeCap( final FriendlyByteBuf buf, final ArgumentTypeInfo $$1, final ArgumentTypeInfo.Template $$2, final CallbackInfo ci) { - final @Nullable ResourceLocation key = BuiltInRegistries.COMMAND_ARGUMENT_TYPE.getKey($$1); + final @Nullable Identifier key = BuiltInRegistries.COMMAND_ARGUMENT_TYPE.getKey($$1); if (key == null || ClientboundCommandsPacket_ArgumentNodeStub_IpForward.ipForward$isVanillaArgument(key)) { return; } @@ -75,7 +75,7 @@ public final class ClientboundCommandsPacket_ArgumentNodeStub_IpForward { buf.writeBytes(commandData); } - private static boolean ipForward$isVanillaArgument(final ResourceLocation key) { + private static boolean ipForward$isVanillaArgument(final Identifier key) { return switch (key.getNamespace()) { case "brigadier" -> true; case "minecraft" -> switch (key.getPath()) { diff --git a/src/mixins/java/org/spongepowered/common/mixin/plugin/entityactivation/EntityActivationRange.java b/src/mixins/java/org/spongepowered/common/mixin/plugin/entityactivation/EntityActivationRange.java index dbf675e3c3e..381d1dd41ed 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/plugin/entityactivation/EntityActivationRange.java +++ b/src/mixins/java/org/spongepowered/common/mixin/plugin/entityactivation/EntityActivationRange.java @@ -25,7 +25,7 @@ package org.spongepowered.common.mixin.plugin.entityactivation; import com.google.common.collect.ImmutableMap; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.Mth; @@ -36,21 +36,21 @@ import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.ambient.AmbientCreature; import net.minecraft.world.entity.animal.Animal; -import net.minecraft.world.entity.animal.WaterAnimal; +import net.minecraft.world.entity.animal.fish.WaterAnimal; import net.minecraft.world.entity.animal.sheep.Sheep; -import net.minecraft.world.entity.boss.EnderDragonPart; import net.minecraft.world.entity.boss.enderdragon.EndCrystal; import net.minecraft.world.entity.boss.enderdragon.EnderDragon; +import net.minecraft.world.entity.boss.enderdragon.EnderDragonPart; import net.minecraft.world.entity.boss.wither.WitherBoss; -import net.minecraft.world.entity.decoration.Painting; +import net.minecraft.world.entity.decoration.painting.Painting; import net.minecraft.world.entity.item.FallingBlockEntity; import net.minecraft.world.entity.item.PrimedTnt; import net.minecraft.world.entity.monster.Enemy; -import net.minecraft.world.entity.npc.Villager; +import net.minecraft.world.entity.npc.villager.Villager; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.entity.projectile.AbstractHurtingProjectile; import net.minecraft.world.entity.projectile.FireworkRocketEntity; import net.minecraft.world.entity.projectile.ThrowableProjectile; +import net.minecraft.world.entity.projectile.hurtingprojectile.AbstractHurtingProjectile; import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.entity.EntitySection; import net.minecraft.world.level.entity.EntitySectionStorage; @@ -153,7 +153,7 @@ public static void initializeEntityActivationState(final Entity entity) { final EntityActivationRangeCategory config = configAdapter.get().entityActivationRange; final EntityTypeBridge type = (EntityTypeBridge) entity.getType(); - final ResourceLocation key = EntityType.getKey(entity.getType()); + final Identifier key = EntityType.getKey(entity.getType()); final byte activationType = spongeEntity.activation$getActivationType(); final String activationTypeName = EntityActivationRange.activationTypeMappings.getOrDefault(activationType, "misc"); if (!type.bridge$isActivationRangeInitialized()) { @@ -409,7 +409,7 @@ public static boolean checkIfActive(final Entity entity) { } public static void addEntityToConfig( - final boolean autoPopulate, final ResourceLocation key, final byte activationType, final String activationTypeName + final boolean autoPopulate, final Identifier key, final byte activationType, final String activationTypeName ) { final InheritableConfigHandle globalConfig = SpongeGameConfigs.getGlobalInheritable(); final EntityActivationRangeCategory activationConfig = globalConfig.get().entityActivationRange; diff --git a/src/mixins/java/org/spongepowered/common/mixin/tracker/util/thread/BlockableEventLoopMixin_Tracker.java b/src/mixins/java/org/spongepowered/common/mixin/tracker/util/thread/BlockableEventLoopMixin_Tracker.java index da8b8c93d59..337350d5276 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/tracker/util/thread/BlockableEventLoopMixin_Tracker.java +++ b/src/mixins/java/org/spongepowered/common/mixin/tracker/util/thread/BlockableEventLoopMixin_Tracker.java @@ -24,10 +24,11 @@ */ package org.spongepowered.common.mixin.tracker.util.thread; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import net.minecraft.util.thread.BlockableEventLoop; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.common.event.tracking.PhaseTracker; import org.spongepowered.common.event.tracking.phase.plugin.BasicPluginContext; import org.spongepowered.common.event.tracking.phase.plugin.PluginPhase; @@ -35,23 +36,23 @@ @Mixin(BlockableEventLoop.class) public abstract class BlockableEventLoopMixin_Tracker { - @Redirect(method = "execute", + @WrapOperation(method = "doRunTask", at = @At( value = "INVOKE", target = "Ljava/lang/Runnable;run()V", remap = false)) - private void tracker$callOnMainThreadWithPhaseState(final Runnable runnable) { + private void tracker$callOnMainThreadWithPhaseState(Runnable instance, Operation original) { // This method can be called async while server is stopping // TODO find why this cause a runaway phase during shutdown of the test server if (this.tracker$isServerAndIsServerStopped()/* && !PlatformHooks.INSTANCE.getGeneralHooks().onServerThread() */) { - runnable.run(); + original.call(instance); return; } try (final BasicPluginContext context = PluginPhase.State.SCHEDULED_TASK.createPhaseContext(PhaseTracker.getInstance()) - .source(runnable)) { + .source(instance)) { context.buildAndSwitch(); - runnable.run(); + original.call(instance); } } diff --git a/src/mixins/resources/mixins.sponge.api.json b/src/mixins/resources/mixins.sponge.api.json index 0ac09aad09a..5b7cd2e650e 100644 --- a/src/mixins/resources/mixins.sponge.api.json +++ b/src/mixins/resources/mixins.sponge.api.json @@ -42,7 +42,7 @@ "minecraft.network.protocol.status.ServerStatus_PlayersMixin_API", "minecraft.network.protocol.status.ServerStatus_VersionMixin_API", "minecraft.network.protocol.status.ServerStatusMixin_API", - "minecraft.resources.ResourceLocationMixin_API", + "minecraft.resources.IdentifierMixin_API", "minecraft.server.MinecraftServerMixin_API", "minecraft.server.ServerScoreboardMixin_API", "minecraft.server.level.ChunkMapMixin_API", @@ -86,6 +86,9 @@ "minecraft.world.InteractionHandMixin_API", "minecraft.world.IWorldGenerationBaseReaderMixin_API", "minecraft.world.IWorldGenerationReaderMixin_API", + "minecraft.world.attribute.AmbientAdditionsSettingsMixin_API", + "minecraft.world.attribute.AmbientMoodSettingsMixin_API", + "minecraft.world.attribute.AmbientParticleSettingsMixin_API", "minecraft.world.damagesource.DamageEffectsMixin_API", "minecraft.world.damagesource.DamageScalingMixin_API", "minecraft.world.damagesource.DamageSourceMixin_API", @@ -105,7 +108,6 @@ "minecraft.world.entity.EntityTypeMixin_API", "minecraft.world.entity.ExperienceOrbMixin_API", "minecraft.world.entity.FlyingAnimalMixin_API", - "minecraft.world.entity.GlowSquidMixin_API", "minecraft.world.entity.HumanoidArmMixin_API", "minecraft.world.entity.InteractionMixin_API", "minecraft.world.entity.LeashableMixin_API", @@ -141,73 +143,79 @@ "minecraft.world.entity.ai.goal.target.TargetGoalMixin_API", "minecraft.world.entity.ambient.AmbientCreatureMixin_API", "minecraft.world.entity.ambient.BatMixin_API", - "minecraft.world.entity.animal.AbstractCowMixin_API", - "minecraft.world.entity.animal.AbstractFishMixin_API", - "minecraft.world.entity.animal.AbstractGolemMixin_API", - "minecraft.world.entity.animal.AbstractSchoolingFishMixin_API", + "minecraft.world.entity.animal.cow.AbstractCowMixin_API", + "minecraft.world.entity.animal.fish.AbstractFishMixin_API", + "minecraft.world.entity.animal.fish.AbstractSchoolingFishMixin_API", "minecraft.world.entity.animal.AgeableWaterCreatureMixin_API", "minecraft.world.entity.animal.AnimalMixin_API", - "minecraft.world.entity.animal.BeeMixin_API", - "minecraft.world.entity.animal.CatMixin_API", - "minecraft.world.entity.animal.CatVariantMixin_API", - "minecraft.world.entity.animal.ChickenMixin_API", - "minecraft.world.entity.animal.ChickenVariantMixin_API", - "minecraft.world.entity.animal.CodMixin_API", - "minecraft.world.entity.animal.CowVariantMixin_API", - "minecraft.world.entity.animal.DolphinMixin_API", + "minecraft.world.entity.animal.bee.BeeMixin_API", + "minecraft.world.entity.animal.feline.CatMixin_API", + "minecraft.world.entity.animal.feline.CatVariantMixin_API", + "minecraft.world.entity.animal.chicken.ChickenMixin_API", + "minecraft.world.entity.animal.chicken.ChickenVariantMixin_API", + "minecraft.world.entity.animal.fish.CodMixin_API", + "minecraft.world.entity.animal.cow.CowVariantMixin_API", + "minecraft.world.entity.animal.dolphin.DolphinMixin_API", "minecraft.world.entity.animal.FlyingAnimalMixin_API", - "minecraft.world.entity.animal.Fox_VariantMixin_API", - "minecraft.world.entity.animal.FoxMixin_API", - "minecraft.world.entity.animal.FrogVariantMixin_API", - "minecraft.world.entity.animal.IronGolemMixin_API", - "minecraft.world.entity.animal.MushroomCow_MushroomTypeMixin_API", - "minecraft.world.entity.animal.MushroomCowMixin_API", - "minecraft.world.entity.animal.OcelotMixin_API", - "minecraft.world.entity.animal.Panda_GeneMixin_API", - "minecraft.world.entity.animal.PandaMixin_API", - "minecraft.world.entity.animal.Parrot_VariantMixin_API", - "minecraft.world.entity.animal.ParrotMixin_API", - "minecraft.world.entity.animal.PigMixin_API", - "minecraft.world.entity.animal.PigVariantMixin_API", - "minecraft.world.entity.animal.PolarBearMixin_API", - "minecraft.world.entity.animal.PufferfishMixin_API", - "minecraft.world.entity.animal.Rabbit_VariantMixin_API", - "minecraft.world.entity.animal.RabbitMixin_API", - "minecraft.world.entity.animal.SalmonMixin_API", - "minecraft.world.entity.animal.SalmonVariantMixin_API", - "minecraft.world.entity.animal.ShoulderRidingEntityMixin_API", - "minecraft.world.entity.animal.SnowGolemMixin_API", - "minecraft.world.entity.animal.SquidMixin_API", - "minecraft.world.entity.animal.TropicalFish_PatternMixin_API", - "minecraft.world.entity.animal.TropicalFishMixin_API", - "minecraft.world.entity.animal.TurtleMixin_API", - "minecraft.world.entity.animal.WaterAnimalMixin_API", + "minecraft.world.entity.animal.fox.Fox_VariantMixin_API", + "minecraft.world.entity.animal.fox.FoxMixin_API", + "minecraft.world.entity.animal.frog.FrogVariantMixin_API", + "minecraft.world.entity.animal.cow.MushroomCow_MushroomTypeMixin_API", + "minecraft.world.entity.animal.cow.MushroomCowMixin_API", + "minecraft.world.entity.animal.feline.OcelotMixin_API", + "minecraft.world.entity.animal.panda.Panda_GeneMixin_API", + "minecraft.world.entity.animal.panda.PandaMixin_API", + "minecraft.world.entity.animal.parrot.Parrot_VariantMixin_API", + "minecraft.world.entity.animal.parrot.ParrotMixin_API", + "minecraft.world.entity.animal.pig.PigMixin_API", + "minecraft.world.entity.animal.pig.PigVariantMixin_API", + "minecraft.world.entity.animal.polarbear.PolarBearMixin_API", + "minecraft.world.entity.animal.fish.PufferfishMixin_API", + "minecraft.world.entity.animal.rabbit.Rabbit_VariantMixin_API", + "minecraft.world.entity.animal.rabbit.RabbitMixin_API", + "minecraft.world.entity.animal.fish.SalmonMixin_API", + "minecraft.world.entity.animal.fish.SalmonVariantMixin_API", + "minecraft.world.entity.animal.parrot.ShoulderRidingEntityMixin_API", + "minecraft.world.entity.animal.fish.TropicalFish_PatternMixin_API", + "minecraft.world.entity.animal.fish.TropicalFishMixin_API", + "minecraft.world.entity.animal.turtle.TurtleMixin_API", + "minecraft.world.entity.animal.fish.WaterAnimalMixin_API", "minecraft.world.entity.animal.allay.AllayMixin_API", "minecraft.world.entity.animal.armadillo.ArmadilloMixin_API", "minecraft.world.entity.animal.axolotl.AxolotlMixin_API", "minecraft.world.entity.animal.axolotl.AxolotlVariantMixin_API", + "minecraft.world.entity.animal.camel.CamelHuskMixin_API", "minecraft.world.entity.animal.camel.CamelMixin_API", "minecraft.world.entity.animal.frog.FrogMixin_API", "minecraft.world.entity.animal.frog.TadpoleMixin_API", "minecraft.world.entity.animal.goat.GoatMixin_API", - "minecraft.world.entity.animal.horse.AbstractChestedHorseMixin_API", - "minecraft.world.entity.animal.horse.AbstractHorseMixin_API", - "minecraft.world.entity.animal.horse.DonkeyMixin_API", - "minecraft.world.entity.animal.horse.HorseMixin_API", - "minecraft.world.entity.animal.horse.LLama_VariantMixin_API", - "minecraft.world.entity.animal.horse.LlamaMixin_API", - "minecraft.world.entity.animal.horse.MarkingsMixin_API", - "minecraft.world.entity.animal.horse.MuleMixin_API", - "minecraft.world.entity.animal.horse.SkeletonHorseMixin_API", - "minecraft.world.entity.animal.horse.TraderLlamaMixin_API", - "minecraft.world.entity.animal.horse.VariantMixin_API", - "minecraft.world.entity.animal.horse.ZombieHorseMixin_API", + "minecraft.world.entity.animal.golem.AbstractGolemMixin_API", + "minecraft.world.entity.animal.golem.CopperGolemMixin_API", + "minecraft.world.entity.animal.golem.IronGolemMixin_API", + "minecraft.world.entity.animal.golem.SnowGolemMixin_API", + "minecraft.world.entity.animal.equine.AbstractChestedHorseMixin_API", + "minecraft.world.entity.animal.equine.AbstractHorseMixin_API", + "minecraft.world.entity.animal.equine.DonkeyMixin_API", + "minecraft.world.entity.animal.equine.HorseMixin_API", + "minecraft.world.entity.animal.equine.LLama_VariantMixin_API", + "minecraft.world.entity.animal.equine.LlamaMixin_API", + "minecraft.world.entity.animal.equine.MarkingsMixin_API", + "minecraft.world.entity.animal.equine.MuleMixin_API", + "minecraft.world.entity.animal.equine.SkeletonHorseMixin_API", + "minecraft.world.entity.animal.equine.TraderLlamaMixin_API", + "minecraft.world.entity.animal.equine.VariantMixin_API", + "minecraft.world.entity.animal.equine.ZombieHorseMixin_API", + "minecraft.world.entity.animal.nautilus.AbstractNautilusMixin_API", + "minecraft.world.entity.animal.nautilus.NautilusMixin_API", + "minecraft.world.entity.animal.nautilus.ZombieNautilusMixin_API", "minecraft.world.entity.animal.sheep.SheepMixin_API", "minecraft.world.entity.animal.sniffer.SnifferMixin_API", + "minecraft.world.entity.animal.squid.GlowSquidMixin_API", + "minecraft.world.entity.animal.squid.SquidMixin_API", "minecraft.world.entity.animal.wolf.WolfMixin_API", "minecraft.world.entity.animal.wolf.WolfSoundVariantMixin_API", "minecraft.world.entity.animal.wolf.WolfVariantMixin_API", - "minecraft.world.entity.boss.EnderDragonPartMixin_API", + "minecraft.world.entity.boss.enderdragon.EnderDragonPartMixin_API", "minecraft.world.entity.boss.enderdragon.EndCrystalMixin_API", "minecraft.world.entity.boss.enderdragon.EnderDragonMixin_API", "minecraft.world.entity.boss.enderdragon.phases.DragonPhaseInstanceMixin_API", @@ -219,111 +227,112 @@ "minecraft.world.entity.decoration.HangingEntityMixin_API", "minecraft.world.entity.decoration.ItemFrameMixin_API", "minecraft.world.entity.decoration.LeashFenceKnotEntityMixin_API", - "minecraft.world.entity.decoration.PaintingMixin_API", - "minecraft.world.entity.decoration.PaintingVariantMixin_API", + "minecraft.world.entity.decoration.painting.PaintingMixin_API", + "minecraft.world.entity.decoration.painting.PaintingVariantMixin_API", "minecraft.world.entity.item.FallingBlockEntityMixin_API", "minecraft.world.entity.item.ItemEntityMixin_API", "minecraft.world.entity.item.PrimedTntMixin_API", - "minecraft.world.entity.monster.AbstractIllagerMixin_API", - "minecraft.world.entity.monster.AbstractPiglinMixin_API", - "minecraft.world.entity.monster.AbstractSkeletonMixin_API", "minecraft.world.entity.monster.BlazeMixin_API", - "minecraft.world.entity.monster.BoggedMixin_API", - "minecraft.world.entity.monster.BreezeMixin_API", - "minecraft.world.entity.monster.CaveSpiderMixin_API", "minecraft.world.entity.monster.CreeperMixin_API", - "minecraft.world.entity.monster.DrownedMixin_API", "minecraft.world.entity.monster.ElderGuardianMixin_API", "minecraft.world.entity.monster.EnderManMixin_API", "minecraft.world.entity.monster.EndermiteMixin_API", "minecraft.world.entity.monster.EnemyMixin_API", - "minecraft.world.entity.monster.EvokerMixin_API", "minecraft.world.entity.monster.GhastMixin_API", "minecraft.world.entity.monster.GiantMixin_API", "minecraft.world.entity.monster.GuardianMixin_API", - "minecraft.world.entity.monster.HoglinMixin_API", - "minecraft.world.entity.monster.HuskMixin_API", - "minecraft.world.entity.monster.IllusionerMixin_API", "minecraft.world.entity.monster.MagmaCubeMixin_API", "minecraft.world.entity.monster.MonsterMixin_API", "minecraft.world.entity.monster.PatrollingMonsterMixin_API", "minecraft.world.entity.monster.Phantom_AttackPhaseMixin_API", "minecraft.world.entity.monster.PhantomMixin_API", - "minecraft.world.entity.monster.PiglinBruteMixin_API", - "minecraft.world.entity.monster.PiglinMixin_API", - "minecraft.world.entity.monster.PillagerMixin_API", "minecraft.world.entity.monster.RangedAttackMobMixin_API", "minecraft.world.entity.monster.RavagerMixin_API", "minecraft.world.entity.monster.ShulkerMixin_API", "minecraft.world.entity.monster.SilverfishMixin_API", - "minecraft.world.entity.monster.SkeletonMixin_API", "minecraft.world.entity.monster.SlimeMixin_API", - "minecraft.world.entity.monster.SpellcasterIllager_IllagerSpellMixin_API", - "minecraft.world.entity.monster.SpellcasterIllagerMixin_API", - "minecraft.world.entity.monster.SpiderMixin_API", - "minecraft.world.entity.monster.StrayMixin_API", "minecraft.world.entity.monster.StriderMixin_API", "minecraft.world.entity.monster.VexMixin_API", - "minecraft.world.entity.monster.VindicatorMixin_API", "minecraft.world.entity.monster.WitchMixin_API", - "minecraft.world.entity.monster.WitherSkeletonMixin_API", "minecraft.world.entity.monster.ZoglinMixin_API", - "minecraft.world.entity.monster.ZombieMixin_API", - "minecraft.world.entity.monster.ZombieVillagerMixin_API", - "minecraft.world.entity.monster.ZombifiedPiglinMixin_API", + "minecraft.world.entity.monster.breeze.BreezeMixin_API", + "minecraft.world.entity.monster.hoglin.HoglinMixin_API", + "minecraft.world.entity.monster.illager.AbstractIllagerMixin_API", + "minecraft.world.entity.monster.illager.EvokerMixin_API", + "minecraft.world.entity.monster.illager.IllusionerMixin_API", + "minecraft.world.entity.monster.illager.PillagerMixin_API", + "minecraft.world.entity.monster.illager.SpellcasterIllager_IllagerSpellMixin_API", + "minecraft.world.entity.monster.illager.SpellcasterIllagerMixin_API", + "minecraft.world.entity.monster.illager.VindicatorMixin_API", + "minecraft.world.entity.monster.piglin.AbstractPiglinMixin_API", + "minecraft.world.entity.monster.piglin.PiglinBruteMixin_API", + "minecraft.world.entity.monster.piglin.PiglinMixin_API", + "minecraft.world.entity.monster.skeleton.AbstractSkeletonMixin_API", + "minecraft.world.entity.monster.skeleton.BoggedMixin_API", + "minecraft.world.entity.monster.skeleton.ParchedMixin_API", + "minecraft.world.entity.monster.skeleton.SkeletonMixin_API", + "minecraft.world.entity.monster.skeleton.StrayMixin_API", + "minecraft.world.entity.monster.skeleton.WitherSkeletonMixin_API", + "minecraft.world.entity.monster.spider.CaveSpiderMixin_API", + "minecraft.world.entity.monster.spider.SpiderMixin_API", "minecraft.world.entity.monster.warden.WardenMixin_API", - "minecraft.world.entity.npc.AbstractVillagerMixin_API", - "minecraft.world.entity.npc.VillagerMixin_API", - "minecraft.world.entity.npc.VillagerProfessionMixin_API", - "minecraft.world.entity.npc.VillagerTrades_ItemListingMixin_API", - "minecraft.world.entity.npc.VillagerTypeMixin_API", - "minecraft.world.entity.npc.WanderingTraderMixin_API", + "minecraft.world.entity.monster.zombie.DrownedMixin_API", + "minecraft.world.entity.monster.zombie.HuskMixin_API", + "minecraft.world.entity.monster.zombie.ZombieMixin_API", + "minecraft.world.entity.monster.zombie.ZombieVillagerMixin_API", + "minecraft.world.entity.monster.zombie.ZombifiedPiglinMixin_API", + "minecraft.world.entity.npc.villager.AbstractVillagerMixin_API", + "minecraft.world.entity.npc.villager.VillagerMixin_API", + "minecraft.world.entity.npc.villager.VillagerProfessionMixin_API", + "minecraft.world.entity.npc.villager.VillagerTrades_ItemListingMixin_API", + "minecraft.world.entity.npc.villager.VillagerTypeMixin_API", + "minecraft.world.entity.npc.wanderingtrader.WanderingTraderMixin_API", "minecraft.world.entity.player.ChatVisiblityMixin_API", "minecraft.world.entity.player.PlayerMixin_API", - "minecraft.world.entity.projectile.AbstractArrow_PickupMixin_API", - "minecraft.world.entity.projectile.AbstractArrowMixin_API", - "minecraft.world.entity.projectile.AbstractHurtingProjectileMixin_API", - "minecraft.world.entity.projectile.ArrowMixin_API", - "minecraft.world.entity.projectile.DragonFireballMixin_API", "minecraft.world.entity.projectile.EvokerFangsMixin_API", "minecraft.world.entity.projectile.EyeOfEnderMixin_API", - "minecraft.world.entity.projectile.FireballMixin_API", "minecraft.world.entity.projectile.FireworkRocketEntityMixin_API", "minecraft.world.entity.projectile.FishingHookMixin_API", "minecraft.world.entity.projectile.ItemSupplierMixin_API", - "minecraft.world.entity.projectile.LargeFireballMixin_API", "minecraft.world.entity.projectile.LlamaSpitMixin_API", "minecraft.world.entity.projectile.ProjectileMixin_API", "minecraft.world.entity.projectile.ShulkerBulletMixin_API", - "minecraft.world.entity.projectile.SmallFireballMixin_API", - "minecraft.world.entity.projectile.SnowballMixin_API", - "minecraft.world.entity.projectile.SpectralArrowMixin_API", - "minecraft.world.entity.projectile.ThrowableItemProjectileMixin_API", "minecraft.world.entity.projectile.ThrowableProjectileMixin_API", - "minecraft.world.entity.projectile.ThrownEggMixin_API", - "minecraft.world.entity.projectile.ThrownEnderpearlMixin_API", - "minecraft.world.entity.projectile.ThrownExperienceBottleMixin_API", - "minecraft.world.entity.projectile.ThrownPotionMixin_API", - "minecraft.world.entity.projectile.ThrownTridentMixin_API", - "minecraft.world.entity.projectile.WitherSkullMixin_API", - "minecraft.world.entity.projectile.windcharge.AbstractWindChargeMixin_API", - "minecraft.world.entity.projectile.windcharge.BreezeWindChargeMixin_API", - "minecraft.world.entity.projectile.windcharge.WindChargeMixin_API", + "minecraft.world.entity.projectile.arrow.AbstractArrow_PickupMixin_API", + "minecraft.world.entity.projectile.arrow.AbstractArrowMixin_API", + "minecraft.world.entity.projectile.arrow.ArrowMixin_API", + "minecraft.world.entity.projectile.arrow.SpectralArrowMixin_API", + "minecraft.world.entity.projectile.arrow.ThrownTridentMixin_API", + "minecraft.world.entity.projectile.hurtingprojectile.AbstractHurtingProjectileMixin_API", + "minecraft.world.entity.projectile.hurtingprojectile.DragonFireballMixin_API", + "minecraft.world.entity.projectile.hurtingprojectile.FireballMixin_API", + "minecraft.world.entity.projectile.hurtingprojectile.LargeFireballMixin_API", + "minecraft.world.entity.projectile.hurtingprojectile.SmallFireballMixin_API", + "minecraft.world.entity.projectile.hurtingprojectile.WitherSkullMixin_API", + "minecraft.world.entity.projectile.hurtingprojectile.windcharge.AbstractWindChargeMixin_API", + "minecraft.world.entity.projectile.hurtingprojectile.windcharge.BreezeWindChargeMixin_API", + "minecraft.world.entity.projectile.hurtingprojectile.windcharge.WindChargeMixin_API", + "minecraft.world.entity.projectile.throwableitemprojectile.SnowballMixin_API", + "minecraft.world.entity.projectile.throwableitemprojectile.ThrowableItemProjectileMixin_API", + "minecraft.world.entity.projectile.throwableitemprojectile.ThrownEggMixin_API", + "minecraft.world.entity.projectile.throwableitemprojectile.ThrownEnderpearlMixin_API", + "minecraft.world.entity.projectile.throwableitemprojectile.ThrownExperienceBottleMixin_API", + "minecraft.world.entity.projectile.throwableitemprojectile.ThrownPotionMixin_API", "minecraft.world.entity.raid.Raid_RaidStatusMixin_API", "minecraft.world.entity.raid.RaiderMixin_API", "minecraft.world.entity.raid.RaidMixin_API", - "minecraft.world.entity.vehicle.AbstractBoatMixin_API", - "minecraft.world.entity.vehicle.AbstractChestBoatMixin_API", - "minecraft.world.entity.vehicle.AbstractMinecartContainerMixin_API", - "minecraft.world.entity.vehicle.AbstractMinecartMixin_API", - "minecraft.world.entity.vehicle.MinecartChestMixin_API", - "minecraft.world.entity.vehicle.MinecartCommandBlockMixin_API", - "minecraft.world.entity.vehicle.MinecartFurnaceMixin_API", - "minecraft.world.entity.vehicle.MinecartHopperMixin_API", - "minecraft.world.entity.vehicle.MinecartMixin_API", - "minecraft.world.entity.vehicle.MinecartSpawnerMixin_API", - "minecraft.world.entity.vehicle.MinecartTNTMixin_API", "minecraft.world.entity.vehicle.VehicleEntityMixin_API", + "minecraft.world.entity.vehicle.boat.AbstractBoatMixin_API", + "minecraft.world.entity.vehicle.boat.AbstractChestBoatMixin_API", + "minecraft.world.entity.vehicle.minecart.AbstractMinecartContainerMixin_API", + "minecraft.world.entity.vehicle.minecart.AbstractMinecartMixin_API", + "minecraft.world.entity.vehicle.minecart.MinecartChestMixin_API", + "minecraft.world.entity.vehicle.minecart.MinecartCommandBlockMixin_API", + "minecraft.world.entity.vehicle.minecart.MinecartFurnaceMixin_API", + "minecraft.world.entity.vehicle.minecart.MinecartHopperMixin_API", + "minecraft.world.entity.vehicle.minecart.MinecartMixin_API", + "minecraft.world.entity.vehicle.minecart.MinecartSpawnerMixin_API", + "minecraft.world.entity.vehicle.minecart.MinecartTNTMixin_API", "minecraft.world.item.ArmorMaterialMixin_API", "minecraft.world.item.DyeColorMixin_API", "minecraft.world.item.FireworkExplosion_ShapeMixin_API", @@ -374,9 +383,6 @@ "minecraft.world.level.LevelWriterMixin_API", "minecraft.world.level.LightLayerMixin_API", "minecraft.world.level.ServerExplosionMixin_API", - "minecraft.world.level.biome.AmbientAdditionsSettingsMixin_API", - "minecraft.world.level.biome.AmbientMoodSettingsMixin_API", - "minecraft.world.level.biome.AmbientParticleSettingsMixin_API", "minecraft.world.level.biome.Biome_PrecipitationMixin_API", "minecraft.world.level.biome.Biome_TemperatureModifierMixin_API", "minecraft.world.level.biome.BiomeMixin_API", @@ -389,10 +395,10 @@ "minecraft.world.level.biome.MobSpawnSettings_MobSpawnCostMixin_API", "minecraft.world.level.biome.MultiNoiseBiomeSourceMixin_API", "minecraft.world.level.biome.TheEndBiomeSourceMixin_API", + "minecraft.world.level.block.CopperGolemStatueBlock_PoseMixin_API", "minecraft.world.level.block.MirrorMixin_API", "minecraft.world.level.block.PortalMixin_API", "minecraft.world.level.block.RotationMixin_API", - "minecraft.world.level.block.CopperGolemStatueBlock_PoseMixin_API", "minecraft.world.level.block.WeatheringCopper_WeatherStateMixin_API", "minecraft.world.level.block.entity.AbstractFurnaceBlockEntityMixin_API", "minecraft.world.level.block.entity.BannerBlockEntityMixin_API", diff --git a/src/mixins/resources/mixins.sponge.core.json b/src/mixins/resources/mixins.sponge.core.json index 7481d2c397e..ce7a1f480d1 100644 --- a/src/mixins/resources/mixins.sponge.core.json +++ b/src/mixins/resources/mixins.sponge.core.json @@ -64,7 +64,6 @@ "server.bossevents.CustomBossEventMixin", "server.commands.BossBarCommandsMixin", "server.commands.DifficultyCommandMixin", - "server.commands.GameRuleCommandMixin", "server.commands.KickCommandMixin", "server.commands.SaveAllCommandMixin", "server.commands.SpreadPlayersCommandMixin", @@ -144,12 +143,12 @@ "world.entity.ai.sensing.NearestLivingEntitySensorMixin", "world.entity.ai.sensing.SensorMixin", "world.entity.animal.AnimalMixin", - "world.entity.animal.Cat_CatRelaxOnOwnerGoalMixin", - "world.entity.animal.OcelotMixin", - "world.entity.animal.ParrotMixin", - "world.entity.animal.PufferfishMixin", - "world.entity.animal.Rabbit_RaidGardenGoalMixin", - "world.entity.animal.horse.AbstractHorseMixin", + "world.entity.animal.feline.Cat_CatRelaxOnOwnerGoalMixin", + "world.entity.animal.feline.OcelotMixin", + "world.entity.animal.parrot.ParrotMixin", + "world.entity.animal.fish.PufferfishMixin", + "world.entity.animal.rabbit.Rabbit_RaidGardenGoalMixin", + "world.entity.animal.equine.AbstractHorseMixin", "world.entity.animal.wolf.WolfMixin", "world.entity.boss.enderdragon.EndCrystalMixin", "world.entity.decoration.ArmorStandMixin", @@ -169,37 +168,37 @@ "world.entity.monster.ShulkerMixin", "world.entity.monster.Silverfish_SilverfishMergeWithStoneGoalMixin", "world.entity.monster.Silverfish_SilverfishWakeUpFriendsGoalMixin", - "world.entity.monster.ZombifiedPiglinMixin", - "world.entity.npc.AbstractVillagerMixin", - "world.entity.npc.VillagerMixin", - "world.entity.npc.WanderingTraderMixin", + "world.entity.monster.zombie.ZombifiedPiglinMixin", + "world.entity.npc.villager.AbstractVillagerMixin", + "world.entity.npc.villager.VillagerMixin", + "world.entity.npc.wanderingtrader.WanderingTraderMixin", "world.entity.player.PlayerMixin", "world.entity.player.PlayerMixin_Attack", - "world.entity.projectile.AbstractArrowMixin", - "world.entity.projectile.AbstractHurtingProjectileMixin", + "world.entity.projectile.arrow.AbstractArrowMixin", + "world.entity.projectile.hurtingprojectile.AbstractHurtingProjectileMixin", "world.entity.projectile.EyeOfEnderMixin", "world.entity.projectile.FireworkRocketEntityMixin", "world.entity.projectile.FishingHookMixin", - "world.entity.projectile.LargeFireballMixin", + "world.entity.projectile.hurtingprojectile.LargeFireballMixin", "world.entity.projectile.LlamaSpitMixin", "world.entity.projectile.ProjectileMixin", "world.entity.projectile.ProjectileUtilMixin", "world.entity.projectile.ShulkerBulletMixin", - "world.entity.projectile.SmallFireballMixin", - "world.entity.projectile.SnowballMixin", + "world.entity.projectile.hurtingprojectile.SmallFireballMixin", + "world.entity.projectile.throwableitemprojectile.SnowballMixin", "world.entity.projectile.ThrowableProjectileMixin", - "world.entity.projectile.ThrownEggMixin", - "world.entity.projectile.ThrownEnderpearlMixin", - "world.entity.projectile.ThrownTridentMixin", - "world.entity.projectile.WitherSkullMixin", - "world.entity.vehicle.AbstractBoatMixin", - "world.entity.vehicle.AbstractMinecartContainerMixin", - "world.entity.vehicle.AbstractMinecartMixin", - "world.entity.vehicle.MinecartCommandBlock_MinecartCommandBaseMixin", - "world.entity.vehicle.MinecartCommandBlockMixin", - "world.entity.vehicle.MinecartFurnaceMixin", - "world.entity.vehicle.MinecartTNTMixin", - "world.entity.vehicle.OldMinecartBehaviourMixin", + "world.entity.projectile.throwableitemprojectile.ThrownEggMixin", + "world.entity.projectile.throwableitemprojectile.ThrownEnderpearlMixin", + "world.entity.projectile.arrow.ThrownTridentMixin", + "world.entity.projectile.hurtingprojectile.WitherSkullMixin", + "world.entity.vehicle.boat.AbstractBoatMixin", + "world.entity.vehicle.minecart.AbstractMinecartContainerMixin", + "world.entity.vehicle.minecart.AbstractMinecartMixin", + "world.entity.vehicle.minecart.MinecartCommandBlock_MinecartCommandBaseMixin", + "world.entity.vehicle.minecart.MinecartCommandBlockMixin", + "world.entity.vehicle.minecart.MinecartFurnaceMixin", + "world.entity.vehicle.minecart.MinecartTNTMixin", + "world.entity.vehicle.minecart.OldMinecartBehaviourMixin", "world.entity.vehicle.VehicleEntityMixin", "world.food.FoodDataMixin", "world.inventory.StonecutterMenuMixin", diff --git a/src/mixins/resources/mixins.sponge.entityactivation.json b/src/mixins/resources/mixins.sponge.entityactivation.json index 79fd4a3428c..7e0303e48d3 100644 --- a/src/mixins/resources/mixins.sponge.entityactivation.json +++ b/src/mixins/resources/mixins.sponge.entityactivation.json @@ -8,7 +8,7 @@ "entity.LivingEntityMixin_Activation", "entity.item.FireworkRocketEntityMixin_EntityActivation", "entity.item.ItemEntityMixin_EntityActivation", - "entity.projectile.AbstractArrowEntityMixin_EntityActivation", + "entity.projectile.arrow.AbstractArrowEntityMixin_EntityActivation", "world.server.ServerLevelMixin_EntityActivation" ] } diff --git a/src/mixins/resources/mixins.sponge.inventory.json b/src/mixins/resources/mixins.sponge.inventory.json index 6ea796e028c..27918fbc51a 100644 --- a/src/mixins/resources/mixins.sponge.inventory.json +++ b/src/mixins/resources/mixins.sponge.inventory.json @@ -20,14 +20,14 @@ "api.world.entity.EquipmentSlot_TypeMixin_Inventory_API", "api.world.entity.EquipmentSlotGroupMixin_Inventory_API", "api.world.entity.EquipmentSlotMixin_Inventory_API", - "api.world.entity.animal.horse.AbstractHorseMixin_Carrier_Inventory_API", - "api.world.entity.monster.PillagerMixin_Carrier_Inventory_API", - "api.world.entity.npc.AbstractVillagerMixin_Carrier_Inventory_API", + "api.world.entity.animal.equine.AbstractHorseMixin_Carrier_Inventory_API", + "api.world.entity.monster.illager.PillagerMixin_Carrier_Inventory_API", + "api.world.entity.npc.villager.AbstractVillagerMixin_Carrier_Inventory_API", "api.world.entity.player.InventoryMixin_Carried_Inventory_API", "api.world.entity.player.InventoryMixin_Inventory_API", "api.world.entity.player.PlayerMixin_Inventory_API", - "api.world.entity.vehicle.AbstractMinecartContainerMixin_Carried_Inventory_API", - "api.world.entity.vehicle.AbstractMinecartContainerMixin_Carrier_Inventory_API", + "api.world.entity.vehicle.minecart.AbstractMinecartContainerMixin_Carried_Inventory_API", + "api.world.entity.vehicle.minecart.AbstractMinecartContainerMixin_Carrier_Inventory_API", "api.world.inventory.AnvilMenuMixin_BlockCarrier_Inventory_API", "api.world.inventory.ArmorSlot_Inventory_API", "api.world.inventory.BrewingStandMenu_PotionSlotMixin_Inventory_API", diff --git a/src/test/java/org/spongepowered/common/data/EntityDataTest.java b/src/test/java/org/spongepowered/common/data/EntityDataTest.java index f30dc767aa8..771b8f74612 100644 --- a/src/test/java/org/spongepowered/common/data/EntityDataTest.java +++ b/src/test/java/org/spongepowered/common/data/EntityDataTest.java @@ -184,8 +184,8 @@ public void testZombifiedPiglin() { final Entity zombifiedPiglin = this.location.createEntity(EntityTypes.ZOMBIFIED_PIGLIN.get()); final Entity pig = this.location.createEntity(EntityTypes.PIG.get()); - DataTest.checkGetData(zombifiedPiglin, Keys.ANGER_LEVEL, 0); - DataTest.checkOfferData(zombifiedPiglin, Keys.ANGER_LEVEL, 10); + DataTest.checkGetData(zombifiedPiglin, Keys.ANGER_LEVEL, 0l); + DataTest.checkOfferData(zombifiedPiglin, Keys.ANGER_LEVEL, 10l); DataTest.checkOfferData(zombifiedPiglin, Keys.TARGET_ENTITY, pig); } diff --git a/vanilla/src/main/java/org/spongepowered/vanilla/client/gui/widget/MetadataPanel.java b/vanilla/src/main/java/org/spongepowered/vanilla/client/gui/widget/MetadataPanel.java index 3b1f26849cc..66c37f503b4 100644 --- a/vanilla/src/main/java/org/spongepowered/vanilla/client/gui/widget/MetadataPanel.java +++ b/vanilla/src/main/java/org/spongepowered/vanilla/client/gui/widget/MetadataPanel.java @@ -290,7 +290,7 @@ public boolean mouseClicked(final MouseButtonEvent event, final boolean repeated final Component component = entry.value; if (component != null) { - this.screen.handleComponentClicked(component.getStyle()); +// this.screen.handleComponentClicked(component.getStyle()); return true; } return super.mouseClicked(event, repeated); diff --git a/vanilla/src/main/java/org/spongepowered/vanilla/server/packs/PluginPackResources.java b/vanilla/src/main/java/org/spongepowered/vanilla/server/packs/PluginPackResources.java index 88c8c8ffe37..c1038dd41b0 100644 --- a/vanilla/src/main/java/org/spongepowered/vanilla/server/packs/PluginPackResources.java +++ b/vanilla/src/main/java/org/spongepowered/vanilla/server/packs/PluginPackResources.java @@ -26,7 +26,7 @@ import com.mojang.logging.LogUtils; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.packs.AbstractPackResources; import net.minecraft.server.packs.PackLocationInfo; import net.minecraft.server.packs.PackType; @@ -82,7 +82,7 @@ private IoSupplier getResource(final String rawPath) { } @Override - public IoSupplier getResource(final PackType type, final ResourceLocation loc) { + public IoSupplier getResource(final PackType type, final Identifier loc) { return this.getResource(String.format(Locale.ROOT, "%s/%s/%s", type.getDirectory(), loc.getNamespace(), loc.getPath())); } @@ -105,9 +105,9 @@ public void listResources(final PackType type, final String namespace, final Str } @Nullable - private ResourceLocation convertResourcePath(final String namespace, final Path resourcePath) { + private Identifier convertResourcePath(final String namespace, final Path resourcePath) { final String path = resourcePath.toString(); - final ResourceLocation location = ResourceLocation.tryBuild(namespace, path); + final Identifier location = Identifier.tryBuild(namespace, path); if (location == null) LOGGER.warn("Invalid path in plugin pack: {}:{}, ignoring", namespace, path); return location; diff --git a/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/server/ReloadableServerResourcesMixin_Vanilla.java b/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/server/ReloadableServerResourcesMixin_Vanilla.java index e1a7b2c7376..2710e82987a 100644 --- a/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/server/ReloadableServerResourcesMixin_Vanilla.java +++ b/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/server/ReloadableServerResourcesMixin_Vanilla.java @@ -33,6 +33,7 @@ import net.minecraft.server.RegistryLayer; import net.minecraft.server.ReloadableServerResources; import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.permissions.PermissionSet; import net.minecraft.world.flag.FeatureFlagSet; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -44,11 +45,15 @@ @Mixin(ReloadableServerResources.class) public abstract class ReloadableServerResourcesMixin_Vanilla { - @WrapOperation(method = "lambda$loadResources$1", at = @At(value = "NEW", target = "(Lnet/minecraft/core/LayeredRegistryAccess;Lnet/minecraft/core/HolderLookup$Provider;Lnet/minecraft/world/flag/FeatureFlagSet;Lnet/minecraft/commands/Commands$CommandSelection;Ljava/util/List;I)Lnet/minecraft/server/ReloadableServerResources;")) - private static ReloadableServerResources impl$onCreateResources(final LayeredRegistryAccess $$0, final HolderLookup.Provider $$1, final FeatureFlagSet $$2, - final Commands.CommandSelection $$3, final List $$4, final int $$5, final Operation original, final @Local(argsOnly = true) ResourceManager resourceManager) { + @WrapOperation(method = "lambda$loadResources$1", at = @At(value = "NEW", target = "(Lnet/minecraft/core/LayeredRegistryAccess;Lnet/minecraft/core/HolderLookup$Provider;Lnet/minecraft/world/flag/FeatureFlagSet;Lnet/minecraft/commands/Commands$CommandSelection;Ljava/util/List;Lnet/minecraft/server/permissions/PermissionSet;)Lnet/minecraft/server/ReloadableServerResources;")) + private static ReloadableServerResources impl$onCreateResources( + final LayeredRegistryAccess $$0, final HolderLookup.Provider $$1, final FeatureFlagSet $$2, + final Commands.CommandSelection $$3, final List $$4, final PermissionSet $$5, + final Operation original, final @Local(argsOnly = true) ResourceManager resourceManager + ) { final ReloadableServerResources instance = original.call($$0, $$1, $$2, $$3, $$4, $$5); - if (instance.getCommands().getDispatcher() instanceof final DelegatingCommandDispatcher delegatingCommandDispatcher) { + if (instance.getCommands().getDispatcher() instanceof + final DelegatingCommandDispatcher delegatingCommandDispatcher) { delegatingCommandDispatcher.permissionService(((ResourceManagerBridge) resourceManager).bridge$services().permissionService()); } return instance; diff --git a/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/tags/TagLoaderMixin_Vanilla.java b/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/tags/TagLoaderMixin_Vanilla.java index c9195edbf28..ccc98e5e9cc 100644 --- a/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/tags/TagLoaderMixin_Vanilla.java +++ b/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/tags/TagLoaderMixin_Vanilla.java @@ -27,7 +27,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.llamalad7.mixinextras.sugar.Local; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.TagEntry; import net.minecraft.tags.TagLoader; import org.spongepowered.asm.mixin.Mixin; @@ -53,7 +53,7 @@ public abstract class TagLoaderMixin_Vanilla implements TagLoaderBridge { } @Inject(method = "lambda$build$5", at = @At("HEAD")) - private void vanilla$onStartBuildingTag(final TagEntry.Lookup $$0x, final Map> $$1x, final ResourceLocation $$2x, + private void vanilla$onStartBuildingTag(final TagEntry.Lookup $$0x, final Map> $$1x, final Identifier $$2x, final @Coerce Object $$3x, final CallbackInfo ci) { this.bridge$buildingTagKey($$2x); } diff --git a/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/LivingEntityMixin_Vanilla_Damage.java b/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/LivingEntityMixin_Vanilla_Damage.java index e62415ed374..cc0ae1270e8 100644 --- a/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/LivingEntityMixin_Vanilla_Damage.java +++ b/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/LivingEntityMixin_Vanilla_Damage.java @@ -42,7 +42,7 @@ public abstract class LivingEntityMixin_Vanilla_Damage implements TrackedDamageBridge { @ModifyVariable(method = "actuallyHurt", at = @At("LOAD"), argsOnly = true, slice = @Slice( - from = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerPlayer;awardStat(Lnet/minecraft/resources/ResourceLocation;I)V"), + from = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerPlayer;awardStat(Lnet/minecraft/resources/Identifier;I)V"), to = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;getCombatTracker()Lnet/minecraft/world/damagesource/CombatTracker;"))) private float damage$firePostEvent_Living(final float damage) { return this.damage$firePostEvent(damage); diff --git a/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/animal/SnowGolemMixin_Vanilla.java b/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/animal/golem/SnowGolemMixin_Vanilla.java similarity index 76% rename from vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/animal/SnowGolemMixin_Vanilla.java rename to vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/animal/golem/SnowGolemMixin_Vanilla.java index 4e290a570d6..23198ebae2e 100644 --- a/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/animal/SnowGolemMixin_Vanilla.java +++ b/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/animal/golem/SnowGolemMixin_Vanilla.java @@ -22,11 +22,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.vanilla.mixin.core.world.entity.animal; +package org.spongepowered.vanilla.mixin.core.world.entity.animal.golem; -import net.minecraft.world.entity.animal.SnowGolem; -import net.minecraft.world.level.GameRules; +import net.minecraft.world.entity.animal.golem.SnowGolem; +import net.minecraft.world.level.gamerules.GameRule; +import net.minecraft.world.level.gamerules.GameRules; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @@ -36,8 +37,8 @@ public abstract class SnowGolemMixin_Vanilla { @Redirect(method = "aiStep()V", at = @At( - value = "INVOKE", target = "Lnet/minecraft/world/level/GameRules;getBoolean(Lnet/minecraft/world/level/GameRules$Key;)Z")) - private boolean impl$checkCanGrief(final GameRules gameRules, final GameRules.Key key) { - return gameRules.getBoolean(key) && ((GrieferBridge) this).bridge$canGrief(); + value = "INVOKE", target = "Lnet/minecraft/world/level/gamerules/GameRules;get(Lnet/minecraft/world/level/gamerules/GameRule;)Ljava/lang/Object;")) + private Object impl$checkCanGrief(final GameRules gameRules, final GameRule rule) { + return (Boolean) gameRules.get(rule) && ((GrieferBridge) this).bridge$canGrief(); } } diff --git a/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/player/PlayerMixin_Vanilla_Damage.java b/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/player/PlayerMixin_Vanilla_Damage.java index 26e6c1fb227..927f3c36760 100644 --- a/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/player/PlayerMixin_Vanilla_Damage.java +++ b/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/player/PlayerMixin_Vanilla_Damage.java @@ -35,7 +35,7 @@ public abstract class PlayerMixin_Vanilla_Damage extends LivingEntityMixin_Vanilla_Damage { @ModifyVariable(method = "actuallyHurt", at = @At("LOAD"), argsOnly = true, slice = @Slice( - from = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;awardStat(Lnet/minecraft/resources/ResourceLocation;I)V"), + from = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;awardStat(Lnet/minecraft/resources/Identifier;I)V"), to = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;causeFoodExhaustion(F)V"))) private float damage$firePostEvent_Player(final float damage) { return this.damage$firePostEvent(damage); diff --git a/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/vehicle/AbstractBoatMixin_Vanilla.java b/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/vehicle/boat/AbstractBoatMixin_Vanilla.java similarity index 96% rename from vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/vehicle/AbstractBoatMixin_Vanilla.java rename to vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/vehicle/boat/AbstractBoatMixin_Vanilla.java index 693141a973a..fddc1321515 100644 --- a/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/vehicle/AbstractBoatMixin_Vanilla.java +++ b/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/entity/vehicle/boat/AbstractBoatMixin_Vanilla.java @@ -22,9 +22,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.spongepowered.vanilla.mixin.core.world.entity.vehicle; +package org.spongepowered.vanilla.mixin.core.world.entity.vehicle.boat; -import net.minecraft.world.entity.vehicle.AbstractBoat; +import net.minecraft.world.entity.vehicle.boat.AbstractBoat; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import org.spongepowered.asm.mixin.Mixin; diff --git a/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/level/block/entity/AbstractFurnaceBlockEntityMixin_Vanilla.java b/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/level/block/entity/AbstractFurnaceBlockEntityMixin_Vanilla.java index 704ddefeb7b..8fb75d67d7f 100644 --- a/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/level/block/entity/AbstractFurnaceBlockEntityMixin_Vanilla.java +++ b/vanilla/src/mixins/java/org/spongepowered/vanilla/mixin/core/world/level/block/entity/AbstractFurnaceBlockEntityMixin_Vanilla.java @@ -95,13 +95,13 @@ public abstract class AbstractFurnaceBlockEntityMixin_Vanilla extends BaseContai final Cause cause = PhaseTracker.getInstance().currentCause(); if (entity.cookingTimer == 0) { // Start final CookingEvent.Start event = SpongeEventFactory.createCookingEventStart(cause, (FurnaceBlockEntity) entityIn, Optional.of(fuel), - Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().location())); + Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().identifier())); SpongeCommon.post(event); return !event.isCancelled(); } else { // Tick up final ItemStackSnapshot cooking = ItemStackUtil.snapshotOf(entity.items.get(0)); final CookingEvent.Tick event = SpongeEventFactory.createCookingEventTick(cause, (FurnaceBlockEntity) entityIn, cooking, Optional.of(fuel), - Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().location())); + Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().identifier())); SpongeCommon.post(event); return !event.isCancelled(); } @@ -120,7 +120,7 @@ public abstract class AbstractFurnaceBlockEntityMixin_Vanilla extends BaseContai final var recipe = entity.bridge$getCurrentRecipe(); final ItemStackSnapshot cooking = ItemStackUtil.snapshotOf(entity.items.get(0)); final CookingEvent.Tick event = SpongeEventFactory.createCookingEventTick(cause, (FurnaceBlockEntity) entityIn, cooking, Optional.of(fuel), - recipe.map(r -> (CookingRecipe) r.value()), recipe.map(r -> (ResourceKey) (Object) r.id().location())); + recipe.map(r -> (CookingRecipe) r.value()), recipe.map(r -> (ResourceKey) (Object) r.id().identifier())); SpongeCommon.post(event); if (event.isCancelled()) { return entity.cookingTimer; // dont tick down @@ -180,7 +180,7 @@ public abstract class AbstractFurnaceBlockEntityMixin_Vanilla extends BaseContai } final Optional fuel = hasFuel && !slots.get(1).isEmpty() ? Optional.of(ItemStackUtil.snapshotOf(slots.get(1))) : Optional.empty(); final CookingEvent.Finish event = SpongeEventFactory.createCookingEventFinish(cause, entity, - fuel, Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().location()), Collections.unmodifiableList(transactions)); + fuel, Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().identifier()), Collections.unmodifiableList(transactions)); SpongeCommon.post(event); for (final SlotTransaction transaction : transactions) { diff --git a/vanilla/src/mixins/resources/mixins.spongevanilla.core.json b/vanilla/src/mixins/resources/mixins.spongevanilla.core.json index 6c6e9c2c14b..887d035d10a 100644 --- a/vanilla/src/mixins/resources/mixins.spongevanilla.core.json +++ b/vanilla/src/mixins/resources/mixins.spongevanilla.core.json @@ -35,10 +35,10 @@ "world.entity.LivingEntityMixin_Vanilla", "world.entity.LivingEntityMixin_Vanilla_Damage", "world.entity.ai.attributes.DefaultAttributesMixin", - "world.entity.animal.SnowGolemMixin_Vanilla", + "world.entity.animal.golem.SnowGolemMixin_Vanilla", "world.entity.item.ItemEntityMixin_Vanilla", "world.entity.player.PlayerMixin_Vanilla_Damage", - "world.entity.vehicle.AbstractBoatMixin_Vanilla", + "world.entity.vehicle.boat.AbstractBoatMixin_Vanilla", "world.level.ServerExplosionMixin_Vanilla", "world.level.block.FireBlockMixin_Vanilla", "world.level.block.entity.AbstractFurnaceBlockEntityMixin_Vanilla",