From bc5da7b5e2a1786b3ddda25123068c6eb714c85c Mon Sep 17 00:00:00 2001 From: Hea3veN Date: Sun, 10 Feb 2019 12:10:13 -0300 Subject: [PATCH] Update to Minecraft 19w06a --- gradle.properties | 8 ++++---- .../ServerPlayerInteractionManagerMixin.java | 8 ++++---- .../modules/world/mixin/BlockItemMixin.java | 8 +------- .../hea3ven/dulcedeleche/ModDulceDeLeche.kt | 2 +- .../enchantment/EnchantmentArea.kt | 4 ++-- .../modules/redstone/RedstoneModule.kt | 8 ++++---- .../redstone/container/AssemblerContainer.kt | 2 +- .../modules/world/BedManagement.kt | 12 ++++++------ .../dulcedeleche/modules/world/WorldModule.kt | 5 ++--- .../world/event/BlockItemPlaceEvent.kt | 19 +++++++++++++++---- 10 files changed, 40 insertions(+), 36 deletions(-) diff --git a/gradle.properties b/gradle.properties index 9932012..9828ac3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,9 +13,9 @@ project_changelog_file=CHANGELOG project_bootstrap_file=assets/dulcedeleche/bootstrap.json version_mc=1.14-Snapshot -version_mc_jar=19w05a -version_mc_mappings=19w05a.6 -version_fabric=0.1.5.87 -version_fabric_loader=0.3.4.104 +version_mc_jar=19w06a +version_mc_mappings=19w06a.3 +version_fabric=0.2.0.90 +version_fabric_loader=0.3.5.106 version_kotlin=1.3.10 version_fabric_kotlin=1.3.10-27 diff --git a/src/main/java/com/hea3ven/dulcedeleche/mixin/ServerPlayerInteractionManagerMixin.java b/src/main/java/com/hea3ven/dulcedeleche/mixin/ServerPlayerInteractionManagerMixin.java index 39c309f..735559f 100644 --- a/src/main/java/com/hea3ven/dulcedeleche/mixin/ServerPlayerInteractionManagerMixin.java +++ b/src/main/java/com/hea3ven/dulcedeleche/mixin/ServerPlayerInteractionManagerMixin.java @@ -8,8 +8,8 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerInteractionManager; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; import com.hea3ven.dulcedeleche.modules.enchantments.EnchantmentsModule; import com.hea3ven.dulcedeleche.modules.enchantments.enchantment.IServerPlayerInteractionManager; @@ -21,7 +21,7 @@ public abstract class ServerPlayerInteractionManagerMixin public ServerPlayerEntity player; @Shadow - public World world; + public ServerWorld world; public final ServerPlayerEntity getPlayer() { return player; @@ -31,11 +31,11 @@ public final void setPlayer(ServerPlayerEntity var1) { this.player = var1; } - public final World getWorld() { + public final ServerWorld getWorld() { return world; } - public final void setWorld(World var1) { + public final void setWorld(ServerWorld var1) { this.world = var1; } diff --git a/src/main/java/com/hea3ven/dulcedeleche/modules/world/mixin/BlockItemMixin.java b/src/main/java/com/hea3ven/dulcedeleche/modules/world/mixin/BlockItemMixin.java index 9d4814f..3325e72 100644 --- a/src/main/java/com/hea3ven/dulcedeleche/modules/world/mixin/BlockItemMixin.java +++ b/src/main/java/com/hea3ven/dulcedeleche/modules/world/mixin/BlockItemMixin.java @@ -1,7 +1,5 @@ package com.hea3ven.dulcedeleche.modules.world.mixin; -import net.fabricmc.fabric.util.HandlerArray; - import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -25,10 +23,6 @@ public BlockItemMixin() { at = @At(value = "RETURN", ordinal = 4)) public final void onPlace(ItemPlacementContext itemPlacementContext, CallbackInfoReturnable info) { - - for (BlockItemPlaceEvent handler : ((HandlerArray) BlockItemPlaceEvent.Companion - .getPOST_SUCCESS()).getBackingArray()) { - handler.place(itemPlacementContext); - } + BlockItemPlaceEvent.Companion.getPOST_SUCCESS().invoker().place(itemPlacementContext); } } diff --git a/src/main/kotlin/com/hea3ven/dulcedeleche/ModDulceDeLeche.kt b/src/main/kotlin/com/hea3ven/dulcedeleche/ModDulceDeLeche.kt index d02ed23..6dc7e22 100644 --- a/src/main/kotlin/com/hea3ven/dulcedeleche/ModDulceDeLeche.kt +++ b/src/main/kotlin/com/hea3ven/dulcedeleche/ModDulceDeLeche.kt @@ -56,7 +56,7 @@ object ModDulceDeLeche : ModInitializer { } fun getFakePlayer(world: World) = object : PlayerEntity(world, ModDulceDeLeche.fakePlayerProfile) { - override fun isSpectator() = false + override fun method_7325() = false override fun isCreative() = false } diff --git a/src/main/kotlin/com/hea3ven/dulcedeleche/modules/enchantments/enchantment/EnchantmentArea.kt b/src/main/kotlin/com/hea3ven/dulcedeleche/modules/enchantments/enchantment/EnchantmentArea.kt index de858c5..0cd8f1b 100644 --- a/src/main/kotlin/com/hea3ven/dulcedeleche/modules/enchantments/enchantment/EnchantmentArea.kt +++ b/src/main/kotlin/com/hea3ven/dulcedeleche/modules/enchantments/enchantment/EnchantmentArea.kt @@ -7,10 +7,10 @@ import net.minecraft.enchantment.EnchantmentTarget import net.minecraft.entity.EquipmentSlot import net.minecraft.entity.player.PlayerEntity import net.minecraft.item.ItemStack +import net.minecraft.server.world.ServerWorld import net.minecraft.util.hit.BlockHitResult import net.minecraft.util.math.BlockPos import net.minecraft.util.math.Direction -import net.minecraft.world.World class EnchantmentArea : Enchantment(Weight.LEGENDARY, EnchantmentTarget.BREAKER, arrayOf(EquipmentSlot.HAND_MAIN)) { @@ -79,7 +79,7 @@ class EnchantmentArea : Enchantment(Weight.LEGENDARY, EnchantmentTarget.BREAKER, interface IServerPlayerInteractionManager { val player: PlayerEntity - val world: World + val world: ServerWorld fun isCreative(): Boolean diff --git a/src/main/kotlin/com/hea3ven/dulcedeleche/modules/redstone/RedstoneModule.kt b/src/main/kotlin/com/hea3ven/dulcedeleche/modules/redstone/RedstoneModule.kt index 61d5830..8755aa3 100644 --- a/src/main/kotlin/com/hea3ven/dulcedeleche/modules/redstone/RedstoneModule.kt +++ b/src/main/kotlin/com/hea3ven/dulcedeleche/modules/redstone/RedstoneModule.kt @@ -9,8 +9,8 @@ import com.hea3ven.dulcedeleche.modules.redstone.client.gui.AssemblerScreen import com.hea3ven.dulcedeleche.modules.redstone.client.gui.WorkbenchScreen import com.hea3ven.dulcedeleche.modules.redstone.dispenser.DispenserBreedBehavior import com.hea3ven.dulcedeleche.modules.redstone.dispenser.DispenserPlantBehavior -import net.fabricmc.fabric.api.client.gui.GuiFactory -import net.fabricmc.fabric.api.client.gui.GuiProviderRegistry +import net.fabricmc.fabric.api.client.screen.ContainerScreenFactory +import net.fabricmc.fabric.api.client.screen.ScreenProviderRegistry import net.fabricmc.fabric.api.container.ContainerFactory import net.fabricmc.fabric.api.container.ContainerProviderRegistry import net.minecraft.block.Block @@ -57,7 +57,7 @@ object RedstoneModule : Module() { workbenchItem.registerBlockItemMap(Item.BLOCK_ITEM_MAP, workbenchItem) ContainerProviderRegistry.INSTANCE.registerFactory(workbenchId, ContainerFactory( WorkbenchBlockEntity.Companion::createContainer)) - GuiProviderRegistry.INSTANCE.registerFactory(workbenchId, GuiFactory(::WorkbenchScreen)) + ScreenProviderRegistry.INSTANCE.registerFactory(workbenchId, ContainerScreenFactory(::WorkbenchScreen)) workbenchBlockEntityType = Registry.register(Registry.BLOCK_ENTITY, workbenchId, BlockEntityType( { WorkbenchBlockEntity(RedstoneModule.workbenchBlockEntityType) }, null)) @@ -68,7 +68,7 @@ object RedstoneModule : Module() { assemblerItem.registerBlockItemMap(Item.BLOCK_ITEM_MAP, assemblerItem) ContainerProviderRegistry.INSTANCE.registerFactory(assemblerId, ContainerFactory( AssemblerBlockEntity.Companion::createContainer)) - GuiProviderRegistry.INSTANCE.registerFactory(assemblerId, GuiFactory(::AssemblerScreen)) + ScreenProviderRegistry.INSTANCE.registerFactory(assemblerId, ContainerScreenFactory(::AssemblerScreen)) assemblerBlockEntityType = Registry.register(Registry.BLOCK_ENTITY, assemblerId, BlockEntityType( { AssemblerBlockEntity(RedstoneModule.assemblerBlockEntityType) }, null)) } diff --git a/src/main/kotlin/com/hea3ven/dulcedeleche/modules/redstone/container/AssemblerContainer.kt b/src/main/kotlin/com/hea3ven/dulcedeleche/modules/redstone/container/AssemblerContainer.kt index 36d4437..c3ca3ec 100644 --- a/src/main/kotlin/com/hea3ven/dulcedeleche/modules/redstone/container/AssemblerContainer.kt +++ b/src/main/kotlin/com/hea3ven/dulcedeleche/modules/redstone/container/AssemblerContainer.kt @@ -13,7 +13,7 @@ class AssemblerContainer(syncId: Int, craftingMachineEntity: AssemblerBlockEntit init { addOutputSlots(craftingMachineEntity, 18, 98, 57, 4, 1) - readData(propertyDelegate) + addProperties(propertyDelegate) } } diff --git a/src/main/kotlin/com/hea3ven/dulcedeleche/modules/world/BedManagement.kt b/src/main/kotlin/com/hea3ven/dulcedeleche/modules/world/BedManagement.kt index 03f7e4a..d0d8380 100644 --- a/src/main/kotlin/com/hea3ven/dulcedeleche/modules/world/BedManagement.kt +++ b/src/main/kotlin/com/hea3ven/dulcedeleche/modules/world/BedManagement.kt @@ -9,6 +9,7 @@ import net.minecraft.server.world.ServerWorld import net.minecraft.text.TranslatableTextComponent import net.minecraft.util.ActionResult import net.minecraft.util.Hand +import net.minecraft.util.hit.BlockHitResult import net.minecraft.util.math.BlockPos import net.minecraft.util.math.Direction import net.minecraft.world.World @@ -18,10 +19,10 @@ object BedManagement { private fun initPlacements(world: ServerWorld) { if (placements == null) { - placements = world.dimensionalPersistentStateManager!!.get(::BedPlacements, "beds_data") + placements = world.persistentStateManager!!.get(::BedPlacements, "beds_data") if (placements == null) { placements = BedPlacements() - world.dimensionalPersistentStateManager!!.set(placements) + world.persistentStateManager!!.set(placements) } } } @@ -58,14 +59,13 @@ object BedManagement { return ActionResult.SUCCESS } - fun onPlayerInteract(player: PlayerEntity, world: World, hand: Hand, pos: BlockPos, direction: Direction, - hitX: Float, hitY: Float, hitZ: Float): ActionResult { + fun onPlayerInteract(player: PlayerEntity, world: World, hand: Hand, hit: BlockHitResult): ActionResult { if (world.isClient) { return ActionResult.PASS } - val state = world.getBlockState(pos) + val state = world.getBlockState(hit.blockPos) if (state.block is BedBlock) { - if (!BedManagement.canSleep(world, pos)) { + if (!BedManagement.canSleep(world, hit.blockPos)) { player.addChatMessage(TranslatableTextComponent("block.minecraft.bed.recently_placed"), true) return ActionResult.FAILURE } diff --git a/src/main/kotlin/com/hea3ven/dulcedeleche/modules/world/WorldModule.kt b/src/main/kotlin/com/hea3ven/dulcedeleche/modules/world/WorldModule.kt index 52af77a..74a514a 100644 --- a/src/main/kotlin/com/hea3ven/dulcedeleche/modules/world/WorldModule.kt +++ b/src/main/kotlin/com/hea3ven/dulcedeleche/modules/world/WorldModule.kt @@ -3,7 +3,7 @@ package com.hea3ven.dulcedeleche.modules.world import com.hea3ven.dulcedeleche.Module import com.hea3ven.dulcedeleche.modules.world.event.BlockItemPlaceEvent import com.hea3ven.tools.commonutils.util.ReflectionUtil.reflectField -import net.fabricmc.fabric.events.PlayerInteractionEvent +import net.fabricmc.fabric.api.event.player.UseBlockCallback import net.minecraft.block.Block import net.minecraft.block.LeavesBlock import net.minecraft.item.ItemPlacementContext @@ -27,8 +27,7 @@ object WorldModule : Module() { return BedManagement.onPlace(itemPlacementContext) } }) - PlayerInteractionEvent.INTERACT_BLOCK.register( - PlayerInteractionEvent.BlockPositioned(BedManagement::onPlayerInteract)) + UseBlockCallback.EVENT.register(UseBlockCallback(BedManagement::onPlayerInteract)) } } diff --git a/src/main/kotlin/com/hea3ven/dulcedeleche/modules/world/event/BlockItemPlaceEvent.kt b/src/main/kotlin/com/hea3ven/dulcedeleche/modules/world/event/BlockItemPlaceEvent.kt index 0af2427..e7bd713 100644 --- a/src/main/kotlin/com/hea3ven/dulcedeleche/modules/world/event/BlockItemPlaceEvent.kt +++ b/src/main/kotlin/com/hea3ven/dulcedeleche/modules/world/event/BlockItemPlaceEvent.kt @@ -1,15 +1,26 @@ package com.hea3ven.dulcedeleche.modules.world.event -import net.fabricmc.fabric.util.HandlerArray -import net.fabricmc.fabric.util.HandlerRegistry +import net.fabricmc.fabric.api.event.Event +import net.fabricmc.fabric.api.event.EventFactory import net.minecraft.item.ItemPlacementContext import net.minecraft.util.ActionResult @FunctionalInterface interface BlockItemPlaceEvent { companion object { - val POST_SUCCESS: HandlerRegistry = HandlerArray(BlockItemPlaceEvent::class.java) + val POST_SUCCESS: Event = EventFactory.createArrayBacked( + BlockItemPlaceEvent::class.java) { listeners -> + object : BlockItemPlaceEvent { + override fun place(itemPlacementContext: ItemPlacementContext): ActionResult { + for (handler in listeners) { + val result = handler.place(itemPlacementContext) + if (result != ActionResult.PASS) return result + } + return ActionResult.PASS + } + } + } } - fun place(itemPlacementContext: ItemPlacementContext) : ActionResult + fun place(itemPlacementContext: ItemPlacementContext): ActionResult } \ No newline at end of file