diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 094efa25d5..3c5a208707 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -205,7 +205,6 @@ import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; import net.minecraftforge.client.model.generators.ConfiguredModel; import net.minecraftforge.client.model.generators.ModelFile; import net.minecraftforge.common.Tags; -import net.minecraftforge.common.ToolType; public class AllBlocks { @@ -1018,13 +1017,14 @@ public class AllBlocks { .simpleItem() .register(); - public static final BlockEntry SAIL = REGISTRATE.block("white_sail", p -> SailBlock.withCanvas(p, DyeColor.WHITE)) - .initialProperties(SharedProperties::wooden) - .properties(BlockBehaviour.Properties::noOcclusion) - .blockstate(BlockStateGen.directionalBlockProvider(false)) - .tag(AllBlockTags.WINDMILL_SAILS.tag) - .simpleItem() - .register(); + public static final BlockEntry SAIL = + REGISTRATE.block("white_sail", p -> SailBlock.withCanvas(p, DyeColor.WHITE)) + .initialProperties(SharedProperties::wooden) + .properties(BlockBehaviour.Properties::noOcclusion) + .blockstate(BlockStateGen.directionalBlockProvider(false)) + .tag(AllBlockTags.WINDMILL_SAILS.tag) + .simpleItem() + .register(); public static final DyedBlockList DYED_SAILS = new DyedBlockList<>(colour -> { if (colour == DyeColor.WHITE) { @@ -1401,8 +1401,7 @@ public class AllBlocks { public static final BlockEntry ZINC_ORE = REGISTRATE.block("zinc_ore", Block::new) .initialProperties(() -> Blocks.GOLD_BLOCK) - .properties(p -> p.harvestLevel(2) - .harvestTool(ToolType.PICKAXE) + .properties(p -> p.requiresCorrectToolForDrops() .sound(SoundType.STONE)) .tag(Tags.Blocks.ORES) .transform(tagBlockAndItem("ores/zinc")) diff --git a/src/main/java/com/simibubi/create/api/event/TileEntityBehaviourEvent.java b/src/main/java/com/simibubi/create/api/event/TileEntityBehaviourEvent.java index c19e78080f..bc5345d79d 100644 --- a/src/main/java/com/simibubi/create/api/event/TileEntityBehaviourEvent.java +++ b/src/main/java/com/simibubi/create/api/event/TileEntityBehaviourEvent.java @@ -13,21 +13,23 @@ import net.minecraftforge.eventbus.api.GenericEvent; /** * Event that is fired just before a SmartTileEntity is being deserealized
* Also if a new one is placed
- * Use it to attach a new {@link TileEntityBehaviour} or replace existing ones (with caution)
+ * Use it to attach a new {@link TileEntityBehaviour} or replace existing ones + * (with caution)
*
- * Actual setup of the behaviours internal workings and data should be done in TileEntityBehaviour#read() and TileEntityBehaviour#initialize() respectively.
+ * Actual setup of the behaviours internal workings and data should be done in + * TileEntityBehaviour#read() and TileEntityBehaviour#initialize() + * respectively.
*
- * Because of the earlyness of this event, the added behaviours will have access to the initial nbt read (unless the TE was placed, not loaded), thereby allowing tiles to store and retrieve data for injected behaviours + * Because of the earlyness of this event, the added behaviours will have access + * to the initial nbt read (unless the TE was placed, not loaded), thereby + * allowing tiles to store and retrieve data for injected behaviours */ public class TileEntityBehaviourEvent extends GenericEvent { - private BlockState state; private T smartTileEntity; private Map, TileEntityBehaviour> behaviours; - public TileEntityBehaviourEvent(BlockState state, T tileEntity, - Map, TileEntityBehaviour> behaviours) { - this.state = state; + public TileEntityBehaviourEvent(T tileEntity, Map, TileEntityBehaviour> behaviours) { smartTileEntity = tileEntity; this.behaviours = behaviours; } @@ -50,7 +52,7 @@ public class TileEntityBehaviourEvent extends Generic } public BlockState getBlockState() { - return state; + return smartTileEntity.getBlockState(); } } diff --git a/src/main/java/com/simibubi/create/compat/dynamictrees/DynamicTree.java b/src/main/java/com/simibubi/create/compat/dynamictrees/DynamicTree.java index c28fb17e57..080663c863 100644 --- a/src/main/java/com/simibubi/create/compat/dynamictrees/DynamicTree.java +++ b/src/main/java/com/simibubi/create/compat/dynamictrees/DynamicTree.java @@ -4,27 +4,32 @@ import java.util.function.BiConsumer; import javax.annotation.Nullable; -import com.ferreusveritas.dynamictrees.api.TreeHelper; -import com.ferreusveritas.dynamictrees.blocks.branches.BranchBlock; -import com.ferreusveritas.dynamictrees.blocks.branches.TrunkShellBlock; -import com.ferreusveritas.dynamictrees.util.BranchDestructionData; import com.simibubi.create.foundation.utility.AbstractBlockBreakQueue; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.Block; +// Commented until dynamic trees are updated public class DynamicTree extends AbstractBlockBreakQueue { - private BlockPos startCutPos; + +// private BlockPos startCutPos; public DynamicTree(BlockPos startCutPos) { - this.startCutPos = startCutPos; +// this.startCutPos = startCutPos; + } + + public static boolean isDynamicBranch(Block block) { + return false; // TreeHelper.isBranch(block) || block instanceof TrunkShellBlock; } + @Override public void destroyBlocks(Level world, ItemStack toDamage, @Nullable Player playerEntity, BiConsumer drop) { + /* + BranchBlock start = TreeHelper.getBranch(world.getBlockState(startCutPos)); if (start == null) //if start is null, it was not a branch start = setBranchToShellMuse(world, world.getBlockState(startCutPos)); //we check for a trunk shell instead @@ -41,9 +46,13 @@ public class DynamicTree extends AbstractBlockBreakQueue { // Feed all the tree drops to drop bi-consumer data.leavesDrops.forEach(stackPos -> drop.accept(stackPos.pos.offset(startCutPos), stackPos.stack)); start.getLogDrops(world, startCutPos, data.species, data.woodVolume).forEach(stack -> drop.accept(startCutPos, stack)); + + */ } - private BranchBlock setBranchToShellMuse(World world, BlockState state){ + /* + private BranchBlock setBranchToShellMuse(World world, BlockState state) { + Block block = state.getBlock(); if (block instanceof TrunkShellBlock){ TrunkShellBlock.ShellMuse muse = ((TrunkShellBlock)block).getMuse(world, startCutPos); @@ -52,10 +61,10 @@ public class DynamicTree extends AbstractBlockBreakQueue { return TreeHelper.getBranch(muse.state); } } + return null; } + */ + - public static boolean isDynamicBranch(Block block) { - return TreeHelper.isBranch(block) || block instanceof TrunkShellBlock; - } } diff --git a/src/main/java/com/simibubi/create/compat/jei/BlueprintTransferHandler.java b/src/main/java/com/simibubi/create/compat/jei/BlueprintTransferHandler.java index 9cf175006e..b2f77c19f5 100644 --- a/src/main/java/com/simibubi/create/compat/jei/BlueprintTransferHandler.java +++ b/src/main/java/com/simibubi/create/compat/jei/BlueprintTransferHandler.java @@ -19,7 +19,7 @@ public class BlueprintTransferHandler implements IRecipeTransferHandler typeIn) { - super(typeIn); + public GeneratingKineticTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { + super(typeIn, pos, state); } protected void notifyStressCapacityChange(float capacity) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java index 8f04a51fd5..e6ac2d7f75 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.contraptions.base; -import static net.minecraft.util.text.TextFormatting.GOLD; +import static net.minecraft.ChatFormatting.GOLD; +import static net.minecraft.ChatFormatting.GRAY; import java.util.List; @@ -41,7 +42,6 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.entity.TickableBlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraftforge.api.distmarker.Dist; @@ -49,7 +49,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.DistExecutor; public abstract class KineticTileEntity extends SmartTileEntity - implements TickableBlockEntity, IHaveGoggleInformation, IHaveHoveringInformation, IInstanceRendered { + implements IHaveGoggleInformation, IHaveHoveringInformation, IInstanceRendered { public @Nullable Long network; public @Nullable BlockPos source; @@ -70,8 +70,8 @@ public abstract class KineticTileEntity extends SmartTileEntity protected float lastStressApplied; protected float lastCapacityProvided; - public KineticTileEntity(BlockEntityType typeIn) { - super(typeIn); + public KineticTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { + super(typeIn, pos, state); effects = new KineticEffectHandler(this); updateSpeed = true; } @@ -226,13 +226,13 @@ public abstract class KineticTileEntity extends SmartTileEntity } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { boolean overStressedBefore = overStressed; clearKineticInformation(); // DO NOT READ kinetic information when placed after movement if (wasMoved) { - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); return; } @@ -252,7 +252,7 @@ public abstract class KineticTileEntity extends SmartTileEntity overStressed = capacity < stress && StressImpact.isEnabled(); } - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); if (clientPacket && overStressedBefore != overStressed && speed != 0) effects.triggerOverStressedEffect(); @@ -412,9 +412,8 @@ public abstract class KineticTileEntity extends SmartTileEntity tooltip.add(componentSpacing.plainCopy() .append(Lang.translate("tooltip.speedRequirement") .withStyle(GOLD))); - Component hint = - Lang.translate("gui.contraptions.not_fast_enough", I18n.get(getBlockState().getBlock() - .getDescriptionId())); + Component hint = Lang.translate("gui.contraptions.not_fast_enough", I18n.get(getBlockState().getBlock() + .getDescriptionId())); List cutString = TooltipHelper.cutTextComponent(hint, GRAY, ChatFormatting.WHITE); for (int i = 0; i < cutString.size(); i++) tooltip.add(componentSpacing.plainCopy() @@ -597,5 +596,4 @@ public abstract class KineticTileEntity extends SmartTileEntity return true; } - } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/AttachedActorBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/AttachedActorBlock.java index 45fe8bc017..4ec3b6aa1c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/AttachedActorBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/AttachedActorBlock.java @@ -6,6 +6,7 @@ import com.simibubi.create.AllShapes; import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.foundation.utility.BlockHelper; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.InteractionResult; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/BlockBreakingKineticTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/BlockBreakingKineticTileEntity.java index 181ae8620c..18953d7b5a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/BlockBreakingKineticTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/BlockBreakingKineticTileEntity.java @@ -30,8 +30,8 @@ public abstract class BlockBreakingKineticTileEntity extends KineticTileEntity { protected int breakerId = -NEXT_BREAKER_ID.incrementAndGet(); protected BlockPos breakingPos; - public BlockBreakingKineticTileEntity(BlockEntityType typeIn) { - super(typeIn); + public BlockBreakingKineticTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { + super(typeIn, pos, state); } @Override @@ -68,12 +68,12 @@ public abstract class BlockBreakingKineticTileEntity extends KineticTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { destroyProgress = compound.getInt("Progress"); ticksUntilNextProgress = compound.getInt("NextTick"); if (compound.contains("Breaking")) breakingPos = NbtUtils.readBlockPos(compound.getCompound("Breaking")); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); } @Override @@ -140,7 +140,7 @@ public abstract class BlockBreakingKineticTileEntity extends KineticTileEntity { public void onBlockBroken(BlockState stateToBreak) { FluidState FluidState = level.getFluidState(breakingPos); level.levelEvent(2001, breakingPos, Block.getId(stateToBreak)); - BlockEntity tileentity = stateToBreak.hasTileEntity() ? level.getBlockEntity(breakingPos) : null; + BlockEntity tileentity = stateToBreak.hasBlockEntity() ? level.getBlockEntity(breakingPos) : null; Vec3 vec = VecHelper.offsetRandomly(VecHelper.getCenterOf(breakingPos), level.random, .125f); Block.getDrops(stateToBreak, (ServerLevel) level, breakingPos, tileentity).forEach((stack) -> { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillBlock.java index e496aae9a3..51a8f48499 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillBlock.java @@ -7,6 +7,7 @@ import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; import com.simibubi.create.foundation.block.ITE; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java index 741e8a57fc..14fac85026 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java @@ -1,23 +1,15 @@ package com.simibubi.create.content.contraptions.components.actors; -import static net.minecraft.state.properties.BlockStateProperties.FACING; - -import com.net.minimport com.jozufozu.flywheel.backend.instancing.Instancer; +import com.jozufozu.flywheel.backend.instancing.Instancer; import com.jozufozu.flywheel.backend.material.MaterialManager; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.RotatingData; -import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; -import net.minecraft.core.Direction; -import net.minecraft.world.level.block.state.BlockState; - -ecraft.world.level.block.state.properties.BlockStatePropertiesport com.jozufozu.flywheel.backend.material.MaterialManager; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.RotatingData; import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; public class DrillInstance extends SingleRotatingInstance { @@ -28,7 +20,7 @@ public class DrillInstance extends SingleRotatingInstance { @Override protected Instancer getModel() { BlockState referenceState = tile.getBlockState(); - Direction facing = referenceState.getValue(FACING); + Direction facing = referenceState.getValue(BlockStateProperties.FACING); return getRotatingMaterial().getModel(AllBlockPartials.DRILL_HEAD, referenceState, facing); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillTileEntity.java index 2b6dc6e9f9..8879fa80d2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillTileEntity.java @@ -2,11 +2,12 @@ package com.simibubi.create.content.contraptions.components.actors; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; public class DrillTileEntity extends BlockBreakingKineticTileEntity { - public DrillTileEntity(BlockEntityType type) { - super(type); + public DrillTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterActorInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterActorInstance.java index 045376fc40..848499afff 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterActorInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterActorInstance.java @@ -1,13 +1,11 @@ package com.simibubi.create.content.contraptions.components.actors; -import static net.minecraft.state.properties.BlockStateProperties.HORIZONTAL_FACING; - import com.jozufozu.flywheel.backend.material.Material; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.jozufozu.flywheel.util.transform.MatrixTransformStack; -import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; @@ -18,6 +16,7 @@ import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationW import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.phys.Vec3; public class HarvesterActorInstance extends ActorInstance { @@ -42,7 +41,7 @@ public class HarvesterActorInstance extends ActorInstance { BlockState state = context.state; - facing = state.getValue(HORIZONTAL_FACING); + facing = state.getValue(BlockStateProperties.HORIZONTAL_FACING); harvester = material.getModel(AllBlockPartials.HARVESTER_BLADE, state).createInstance(); @@ -75,7 +74,7 @@ public class HarvesterActorInstance extends ActorInstance { @Override public void beginFrame() { - MatrixStack ms = new MatrixStack(); + PoseStack ms = new PoseStack(); MatrixTransformStack msr = MatrixTransformStack.of(ms); msr.translate(context.localPos) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java index e7a6238706..a7f79831fe 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java @@ -1,8 +1,10 @@ package com.simibubi.create.content.contraptions.components.actors; -import static net.minecraft.block.HorizontalBlock.FACING; +import javax.annotation.Nullable; -import javanet.minecrafimport com.jozufozu.flywheel.backend.Backend; +import org.apache.commons.lang3.mutable.MutableBoolean; + +import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; @@ -12,7 +14,7 @@ import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.utility.BlockHelper; import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; -import javax.annotation.Nullable; + import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.tags.BlockTags; @@ -32,46 +34,12 @@ import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.minecraft.world.level.block.state.properties.Property; import net.minecraft.world.phys.Vec3; import net.minecraftforge.common.IPlantable; -import org.apache.commons.lang3.mutable.MutableBoolean; - -t.world.level.block.HorizontalDirectionalBlockg.apache.commons.lang3.mutable.MutableBoolean; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.backend.material.MaterialManager; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.utility.BlockHelper; -import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.block.AbstractPlantBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.CocoaBlock; -import net.minecraft.block.CropsBlock; -import net.minecraft.block.SugarCaneBlock; -import net.minecraft.block.SweetBerryBushBlock; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.state.IntegerProperty; -import net.minecraft.state.Property; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tags.BlockTags; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.common.IPlantable; public class HarvesterMovementBehaviour extends MovementBehaviour { @Override public boolean isActive(MovementContext context) { - return !VecHelper.isVecPointingTowards(context.relativeMotion, context.state.getValue(FACING) + return !VecHelper.isVecPointingTowards(context.relativeMotion, context.state.getValue(HarvesterBlock.FACING) .getOpposite()); } @@ -97,7 +65,7 @@ public class HarvesterMovementBehaviour extends MovementBehaviour { @Override public Vec3 getActiveAreaOffset(MovementContext context) { - return Vec3.atLowerCornerOf(context.state.getValue(FACING) + return Vec3.atLowerCornerOf(context.state.getValue(HarvesterBlock.FACING) .getNormal()) .scale(.45); } @@ -121,8 +89,7 @@ public class HarvesterMovementBehaviour extends MovementBehaviour { ItemStack item = ItemStack.EMPTY; float effectChance = 1; - if (stateVisited.getBlock() - .is(BlockTags.LEAVES)) { + if (stateVisited.is(BlockTags.LEAVES)) { item = new ItemStack(Items.SHEARS); effectChance = .45f; } @@ -144,7 +111,7 @@ public class HarvesterMovementBehaviour extends MovementBehaviour { private boolean isValidCrop(Level world, BlockPos pos, BlockState state) { boolean harvestPartial = AllConfigs.SERVER.kinetics.harvestPartiallyGrown.get(); boolean replant = AllConfigs.SERVER.kinetics.harvesterReplants.get(); - + if (state.getBlock() instanceof CropBlock) { CropBlock crop = (CropBlock) state.getBlock(); if (harvestPartial) @@ -180,8 +147,7 @@ public class HarvesterMovementBehaviour extends MovementBehaviour { return false; if (state.getBlock() instanceof SugarCaneBlock) return true; - if (state.getBlock() - .is(BlockTags.LEAVES)) + if (state.is(BlockTags.LEAVES)) return true; if (state.getCollisionShape(world, pos) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PloughMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PloughMovementBehaviour.java index cef84a1f99..3a2814c822 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PloughMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PloughMovementBehaviour.java @@ -1,9 +1,9 @@ package com.simibubi.create.content.contraptions.components.actors; -import static net.minecraft.block.HorizontalBlock.FACING; - -import com.net.minecrafimport com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; +import com.simibubi.create.content.contraptions.components.actors.PloughBlock.PloughFakePlayer; +import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.foundation.utility.VecHelper; + import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionHand; @@ -25,36 +25,11 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult.Type; import net.minecraft.world.phys.Vec3; -t.world.level.block.HorizontalDirectionalBlocks.components.actors.PloughBlock.PloughFakePlayer; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.BubbleColumnBlock; -import net.minecraft.block.FarmlandBlock; -import net.minecraft.block.FlowingFluidBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.item.Items; -import net.minecraft.loot.LootContext; -import net.minecraft.loot.LootParameters; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.math.RayTraceContext.BlockMode; -import net.minecraft.util.math.RayTraceContext.FluidMode; -import net.minecraft.util.math.RayTraceResult.Type; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - public class PloughMovementBehaviour extends BlockBreakingMovementBehaviour { @Override public boolean isActive(MovementContext context) { - return !VecHelper.isVecPointingTowards(context.relativeMotion, context.state.getValue(FACING) + return !VecHelper.isVecPointingTowards(context.relativeMotion, context.state.getValue(PloughBlock.FACING) .getOpposite()); } @@ -74,8 +49,7 @@ public class PloughMovementBehaviour extends BlockBreakingMovementBehaviour { if (player == null) return; - BlockHitResult ray = world - .clip(new ClipContext(vec, vec.add(0, -1, 0), Block.OUTLINE, Fluid.NONE, player)); + BlockHitResult ray = world.clip(new ClipContext(vec, vec.add(0, -1, 0), Block.OUTLINE, Fluid.NONE, player)); if (ray.getType() != Type.BLOCK) return; @@ -85,8 +59,9 @@ public class PloughMovementBehaviour extends BlockBreakingMovementBehaviour { @Override public Vec3 getActiveAreaOffset(MovementContext context) { - return Vec3.atLowerCornerOf(context.state.getValue(FACING) - .getNormal()).scale(.45); + return Vec3.atLowerCornerOf(context.state.getValue(PloughBlock.FACING) + .getNormal()) + .scale(.45); } @Override @@ -113,10 +88,11 @@ public class PloughMovementBehaviour extends BlockBreakingMovementBehaviour { if (brokenState.getBlock() == Blocks.SNOW && context.world instanceof ServerLevel) { ServerLevel world = (ServerLevel) context.world; - brokenState.getDrops(new LootContext.Builder(world).withParameter(LootContextParams.BLOCK_STATE, brokenState) - .withParameter(LootContextParams.ORIGIN, Vec3.atCenterOf(pos)) - .withParameter(LootContextParams.THIS_ENTITY, getPlayer(context)) - .withParameter(LootContextParams.TOOL, new ItemStack(Items.IRON_SHOVEL))) + brokenState + .getDrops(new LootContext.Builder(world).withParameter(LootContextParams.BLOCK_STATE, brokenState) + .withParameter(LootContextParams.ORIGIN, Vec3.atCenterOf(pos)) + .withParameter(LootContextParams.THIS_ENTITY, getPlayer(context)) + .withParameter(LootContextParams.TOOL, new ItemStack(Items.IRON_SHOVEL))) .forEach(s -> dropItem(context, s)); } } @@ -125,7 +101,7 @@ public class PloughMovementBehaviour extends BlockBreakingMovementBehaviour { public void stopMoving(MovementContext context) { super.stopMoving(context); if (context.temporaryData instanceof PloughFakePlayer) - ((PloughFakePlayer) context.temporaryData).remove(); + ((PloughFakePlayer) context.temporaryData).discard(); } private PloughFakePlayer getPlayer(MovementContext context) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableFluidInterfaceTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableFluidInterfaceTileEntity.java index 2ad6da14a6..7caa7cdc81 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableFluidInterfaceTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableFluidInterfaceTileEntity.java @@ -2,8 +2,10 @@ package com.simibubi.create.content.contraptions.components.actors; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.fluids.FluidStack; @@ -14,8 +16,8 @@ public class PortableFluidInterfaceTileEntity extends PortableStorageInterfaceTi protected LazyOptional capability; - public PortableFluidInterfaceTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public PortableFluidInterfaceTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); capability = createEmptyHandler(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableItemInterfaceTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableItemInterfaceTileEntity.java index 90197e9d21..fc94dab322 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableItemInterfaceTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableItemInterfaceTileEntity.java @@ -3,9 +3,11 @@ package com.simibubi.create.content.contraptions.components.actors; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; import com.simibubi.create.foundation.item.ItemHandlerWrapper; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.IItemHandlerModifiable; @@ -15,8 +17,8 @@ public class PortableItemInterfaceTileEntity extends PortableStorageInterfaceTil protected LazyOptional capability; - public PortableItemInterfaceTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public PortableItemInterfaceTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); capability = LazyOptional.empty(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceBlock.java index baa3f6c17c..64b21cbcf1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceBlock.java @@ -7,6 +7,7 @@ import com.simibubi.create.AllTileEntities; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.block.WrenchableDirectionalBlock; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceTileEntity.java index 21fa0c03d9..6a5c1852eb 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceTileEntity.java @@ -8,6 +8,7 @@ import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.animation.LerpedFloat; +import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; @@ -25,8 +26,8 @@ public abstract class PortableStorageInterfaceTileEntity extends SmartTileEntity protected boolean powered; protected Entity connectedEntity; - public PortableStorageInterfaceTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public PortableStorageInterfaceTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); transferTimer = 0; connectionAnimation = LerpedFloat.linear() .startWithValue(0); @@ -85,8 +86,8 @@ public abstract class PortableStorageInterfaceTileEntity extends SmartTileEntity } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); + protected void fromTag(CompoundTag compound, boolean clientPacket) { + super.fromTag(compound, clientPacket); transferTimer = compound.getInt("Timer"); distance = compound.getFloat("Distance"); powered = compound.getBoolean("Powered"); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatBlock.java index 095d4d001d..2a75625532 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatBlock.java @@ -9,6 +9,7 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.foundation.utility.BlockHelper; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.world.InteractionHand; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatEntity.java index 13485bb9ae..1b73dbee8b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatEntity.java @@ -3,7 +3,6 @@ package com.simibubi.create.content.contraptions.components.actors; import com.simibubi.create.AllEntityTypes; import net.minecraft.client.renderer.culling.Frustum; -import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/StorageInterfaceMovement.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/StorageInterfaceMovement.java index c4d4b606ea..93be485cbf 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/StorageInterfaceMovement.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/StorageInterfaceMovement.java @@ -16,8 +16,8 @@ //import net.minecraft.item.ItemStack; //import net.minecraft.nbt.NBTUtil; //import net.minecraft.tileentity.TileEntity; -//import net.minecraft.util.Direction; -//import net.minecraft.util.Direction.Axis; +//import net.minecraft.core.Direction; +//import net.minecraft.core.Direction.Axis; //import net.minecraft.util.math.BlockPos; //import net.minecraft.util.math.vector.Vector3d; //import net.minecraft.world.World; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/ContraptionBlockSource.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/ContraptionBlockSource.java index 547a83a38b..f0ffb2b4f2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/ContraptionBlockSource.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/ContraptionBlockSource.java @@ -4,6 +4,7 @@ import javax.annotation.Nullable; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockSource; import net.minecraft.core.Direction; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/DispenserMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/DispenserMovementBehaviour.java index 600c66cdf7..008fe9ba2b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/DispenserMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/DispenserMovementBehaviour.java @@ -6,6 +6,7 @@ import javax.annotation.ParametersAreNonnullByDefault; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.dispenser.AbstractProjectileDispenseBehavior; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java index 1b2d9f2683..0db837924d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java @@ -12,6 +12,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.VecHelper; +import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.sounds.SoundEvent; @@ -37,14 +38,14 @@ public class CuckooClockTileEntity extends KineticTileEntity { PIG, CREEPER, SURPRISE, NONE; } - public CuckooClockTileEntity(BlockEntityType type) { - super(type); + public CuckooClockTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); animationType = Animation.NONE; } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); + protected void fromTag(CompoundTag compound, boolean clientPacket) { + super.fromTag(compound, clientPacket); if (clientPacket && compound.contains("Animation")) { animationType = NBTHelper.readEnum(compound, "Animation", Animation.class); animationProgress.lastValue = 0; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterBlock.java index 5b075f0a38..fda74d93fb 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterBlock.java @@ -214,7 +214,7 @@ public class MechanicalCrafterBlock extends HorizontalKineticBlock implements IT crafter.setChanged(); crafter.sendData(); if (!player.isCreative()) - player.inventory.placeItemBackInInventory(worldIn, AllItems.CRAFTER_SLOT_COVER.asStack()); + player.getInventory().placeItemBackInInventory(worldIn, AllItems.CRAFTER_SLOT_COVER.asStack()); return InteractionResult.SUCCESS; } return InteractionResult.PASS; @@ -223,7 +223,7 @@ public class MechanicalCrafterBlock extends HorizontalKineticBlock implements IT return InteractionResult.PASS; if (worldIn.isClientSide) return InteractionResult.SUCCESS; - player.inventory.placeItemBackInInventory(worldIn, inSlot); + player.getInventory().placeItemBackInInventory(worldIn, inSlot); crafter.getInventory().setStackInSlot(0, ItemStack.EMPTY); return InteractionResult.SUCCESS; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterInstance.java index 85ebb4b780..596b8a4ec1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterInstance.java @@ -6,7 +6,7 @@ import com.jozufozu.flywheel.backend.instancing.Instancer; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.jozufozu.flywheel.util.transform.TransformStack; -import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.RotatingData; @@ -27,9 +27,9 @@ public class MechanicalCrafterInstance extends SingleRotatingInstance { return getRotatingMaterial().getModel(AllBlockPartials.SHAFTLESS_COGWHEEL, blockState, facing, rotateToFace(facing)); } - private Supplier rotateToFace(Direction facing) { + private Supplier rotateToFace(Direction facing) { return () -> { - MatrixStack stack = new MatrixStack(); + PoseStack stack = new PoseStack(); TransformStack stacker = MatrixTransformStack.of(stack) .centre(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java index d049f0579f..cb628a8118 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java @@ -96,8 +96,8 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity { private ItemStack scriptedResult = ItemStack.EMPTY; - public MechanicalCrafterTileEntity(BlockEntityType type) { - super(type); + public MechanicalCrafterTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); setLazyTickRate(20); phase = Phase.IDLE; groupedItemsBeforeCraft = new GroupedItems(); @@ -157,7 +157,7 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { Phase phaseBefore = phase; GroupedItems before = this.groupedItems; @@ -172,7 +172,7 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity { this.phase = phase; countDown = compound.getInt("CountDown"); covered = compound.getBoolean("Cover"); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); if (!clientPacket) return; if (compound.contains("Redraw")) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankInstance.java index ba76bc25fa..fbaa2cacaa 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankInstance.java @@ -6,7 +6,7 @@ import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.jozufozu.flywheel.util.transform.MatrixTransformStack; -import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; import com.simibubi.create.foundation.utility.AnimationTickHolder; @@ -50,7 +50,7 @@ public class HandCrankInstance extends SingleRotatingInstance implements IDynami Direction.Axis axis = facing.getAxis(); float angle = (tile.independentAngle + AnimationTickHolder.getPartialTicks() * tile.chasingVelocity) / 360; - MatrixStack ms = new MatrixStack(); + PoseStack ms = new PoseStack(); MatrixTransformStack.of(ms) .translate(getInstancePosition()) .centre() diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankTileEntity.java index ca6740540e..bb8dab3935 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankTileEntity.java @@ -5,6 +5,7 @@ import com.simibubi.create.AllSoundEvents; import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity; import com.simibubi.create.foundation.utility.AnimationTickHolder; +import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -19,8 +20,8 @@ public class HandCrankTileEntity extends GeneratingKineticTileEntity { public float independentAngle; public float chasingVelocity; - public HandCrankTileEntity(BlockEntityType type) { - super(type); + public HandCrankTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } public void turn(boolean back) { @@ -52,9 +53,9 @@ public class HandCrankTileEntity extends GeneratingKineticTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { inUse = compound.getInt("InUse"); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelBlock.java index 107cc2d6b0..774c1b7c48 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelBlock.java @@ -1,7 +1,6 @@ package com.simibubi.create.content.contraptions.components.crusher; import static com.simibubi.create.content.contraptions.components.crusher.CrushingWheelControllerBlock.VALID; -import static net.minecraft.block.DirectionalBlock.FACING; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; @@ -47,8 +46,7 @@ public class CrushingWheelBlock extends RotatedPillarKineticBlock implements ITE } @Override - public VoxelShape getCollisionShape(BlockState state, BlockGetter worldIn, BlockPos pos, - CollisionContext context) { + public VoxelShape getCollisionShape(BlockState state, BlockGetter worldIn, BlockPos pos, CollisionContext context) { return AllShapes.CRUSHING_WHEEL_COLLISION_SHAPE; } @@ -62,7 +60,7 @@ public class CrushingWheelBlock extends RotatedPillarKineticBlock implements ITE worldIn.setBlockAndUpdate(pos.relative(d), Blocks.AIR.defaultBlockState()); } - if (state.hasTileEntity() && state.getBlock() != newState.getBlock()) { + if (state.hasBlockEntity() && state.getBlock() != newState.getBlock()) { worldIn.removeBlockEntity(pos); } } @@ -78,11 +76,9 @@ public class CrushingWheelBlock extends RotatedPillarKineticBlock implements ITE boolean controllerExists = AllBlocks.CRUSHING_WHEEL_CONTROLLER.has(world.getBlockState(controllerPos)); boolean controllerIsValid = controllerExists && world.getBlockState(controllerPos) - .getValue(VALID); - Direction controllerOldDirection = controllerExists - ? world.getBlockState(controllerPos) - .getValue(FACING) - : null; + .getValue(VALID); + Direction controllerOldDirection = controllerExists ? world.getBlockState(controllerPos) + .getValue(CrushingWheelControllerBlock.FACING) : null; boolean controllerShouldExist = false; boolean controllerShouldBeValid = false; @@ -96,20 +92,17 @@ public class CrushingWheelBlock extends RotatedPillarKineticBlock implements ITE CrushingWheelTileEntity otherTe = getTileEntity(world, otherWheelPos); if (te != null && otherTe != null && (te.getSpeed() > 0) != (otherTe.getSpeed() > 0) - && te.getSpeed() != 0) { + && te.getSpeed() != 0) { Axis wheelAxis = state.getValue(AXIS); Axis sideAxis = side.getAxis(); - int controllerADO = Math.round(Math.signum(te.getSpeed())) * side.getAxisDirection().getStep(); - Vec3 controllerDirVec = new Vec3(wheelAxis == Axis.X ? 1 : 0 - , wheelAxis == Axis.Y ? 1 : 0 - , wheelAxis == Axis.Z ? 1 : 0) - .cross(new Vec3(sideAxis == Axis.X ? 1 : 0 - , sideAxis == Axis.Y ? 1 : 0 - , sideAxis == Axis.Z ? 1 : 0)); + int controllerADO = Math.round(Math.signum(te.getSpeed())) * side.getAxisDirection() + .getStep(); + Vec3 controllerDirVec = new Vec3(wheelAxis == Axis.X ? 1 : 0, wheelAxis == Axis.Y ? 1 : 0, + wheelAxis == Axis.Z ? 1 : 0).cross( + new Vec3(sideAxis == Axis.X ? 1 : 0, sideAxis == Axis.Y ? 1 : 0, sideAxis == Axis.Z ? 1 : 0)); - controllerNewDirection = Direction.getNearest(controllerDirVec.x * controllerADO - , controllerDirVec.y * controllerADO - , controllerDirVec.z * controllerADO); + controllerNewDirection = Direction.getNearest(controllerDirVec.x * controllerADO, + controllerDirVec.y * controllerADO, controllerDirVec.z * controllerADO); controllerShouldBeValid = true; } @@ -125,20 +118,20 @@ public class CrushingWheelBlock extends RotatedPillarKineticBlock implements ITE if (!controllerExists) { if (!world.getBlockState(controllerPos) - .getMaterial() - .isReplaceable()) + .getMaterial() + .isReplaceable()) return; world.setBlockAndUpdate(controllerPos, AllBlocks.CRUSHING_WHEEL_CONTROLLER.getDefaultState() - .setValue(VALID, controllerShouldBeValid) - .setValue(FACING, controllerNewDirection)); + .setValue(VALID, controllerShouldBeValid) + .setValue(CrushingWheelControllerBlock.FACING, controllerNewDirection)); } else if (controllerIsValid != controllerShouldBeValid || controllerOldDirection != controllerNewDirection) { world.setBlockAndUpdate(controllerPos, world.getBlockState(controllerPos) - .setValue(VALID, controllerShouldBeValid) - .setValue(FACING, controllerNewDirection)); + .setValue(VALID, controllerShouldBeValid) + .setValue(CrushingWheelControllerBlock.FACING, controllerNewDirection)); } ((CrushingWheelControllerBlock) AllBlocks.CRUSHING_WHEEL_CONTROLLER.get()) - .updateSpeed(world.getBlockState(controllerPos), world, controllerPos); + .updateSpeed(world.getBlockState(controllerPos), world, controllerPos); } @@ -148,7 +141,7 @@ public class CrushingWheelBlock extends RotatedPillarKineticBlock implements ITE return; float speed = getTileEntityOptional(worldIn, pos).map(CrushingWheelTileEntity::getSpeed) - .orElse(0f); + .orElse(0f); double x = 0; double z = 0; @@ -162,7 +155,7 @@ public class CrushingWheelBlock extends RotatedPillarKineticBlock implements ITE z += (pos.getZ() + .5f - entityIn.getZ()) * .1f; } entityIn.setDeltaMovement(entityIn.getDeltaMovement() - .add(x, 0, z)); + .add(x, 0, z)); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelControllerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelControllerTileEntity.java index 0db552782e..b3943beadd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelControllerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelControllerTileEntity.java @@ -1,8 +1,12 @@ package com.simibubi.create.content.contraptions.components.crusher; -import static net.minecraft.block.DirectionalBlock.FACING; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.Random; +import java.util.UUID; -import javanimport com.simibubi.create.AllRecipeTypes; +import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.content.contraptions.processing.ProcessingInventory; import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; import com.simibubi.create.foundation.config.AllConfigs; @@ -14,11 +18,7 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.VecHelper; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.Random; -import java.util.UUID; + import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -47,52 +47,6 @@ import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.wrapper.RecipeWrapper; -et.minecraft.world.level.block.DirectionalBlockist; -import java.util.Optional; -import java.util.Random; -import java.util.UUID; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.contraptions.processing.ProcessingInventory; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.item.ItemHelper; -import com.simibubi.create.foundation.sound.SoundScapes; -import com.simibubi.create.foundation.sound.SoundScapes.AmbienceGroup; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.BlockItem; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.particles.BlockParticleData; -import net.minecraft.particles.IParticleData; -import net.minecraft.particles.ItemParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.items.CapabilityItemHandler; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.wrapper.RecipeWrapper; - public class CrushingWheelControllerTileEntity extends SmartTileEntity { public Entity processingEntity; @@ -104,8 +58,8 @@ public class CrushingWheelControllerTileEntity extends SmartTileEntity { private RecipeWrapper wrapper; public float crushingspeed; - public CrushingWheelControllerTileEntity(BlockEntityType type) { - super(type); + public CrushingWheelControllerTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); inventory = new ProcessingInventory(this::itemInserted) { @Override @@ -154,7 +108,7 @@ public class CrushingWheelControllerTileEntity extends SmartTileEntity { float speed = crushingspeed * 4; Vec3 centerPos = VecHelper.getCenterOf(worldPosition); - Direction facing = getBlockState().getValue(FACING); + Direction facing = getBlockState().getValue(CrushingWheelControllerBlock.FACING); int offset = facing.getAxisDirection() .getStep(); Vec3 outSpeed = new Vec3((facing.getAxis() == Axis.X ? 0.25D : 0.0D) * offset, @@ -315,7 +269,7 @@ public class CrushingWheelControllerTileEntity extends SmartTileEntity { inventory.setStackInSlot(0, itemEntity.getItem() .copy()); itemInserted(inventory.getStackInSlot(0)); - itemEntity.remove(); + itemEntity.discard(); level.sendBlockUpdated(worldPosition, getBlockState(), getBlockState(), 2 | 16); } @@ -377,8 +331,8 @@ public class CrushingWheelControllerTileEntity extends SmartTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); + protected void fromTag(CompoundTag compound, boolean clientPacket) { + super.fromTag(compound, clientPacket); if (compound.contains("Entity") && !isOccupied()) { entityUUID = NbtUtils.loadUUID(NBTHelper.getINBT(compound, "Entity")); this.searchForEntity = true; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelTileEntity.java index 2a72d271f9..0dae399f31 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelTileEntity.java @@ -3,10 +3,12 @@ package com.simibubi.create.content.contraptions.components.crusher; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.foundation.utility.Iterate; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import net.minecraftforge.event.entity.living.LivingDropsEvent; @@ -20,8 +22,8 @@ public class CrushingWheelTileEntity extends KineticTileEntity { public static DamageSource damageSource = new DamageSource("create.crush").bypassArmor() .setScalesWithDifficulty(); - public CrushingWheelTileEntity(BlockEntityType type) { - super(type); + public CrushingWheelTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); setLazyTickRate(20); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerActorInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerActorInstance.java index 563725fd13..2444f0d8b2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerActorInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerActorInstance.java @@ -9,8 +9,7 @@ import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.jozufozu.flywheel.util.transform.MatrixTransformStack; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.math.Vector3d; +import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.base.KineticTileInstance; @@ -26,8 +25,9 @@ import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationW import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.Mth; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; public class DeployerActorInstance extends ActorInstance { @@ -83,18 +83,18 @@ public class DeployerActorInstance extends ActorInstance { public void beginFrame() { double factor; if (context.contraption.stalled || context.position == null || context.data.contains("StationaryTimer")) { - factor = MathHelper.sin(AnimationTickHolder.getRenderTime() * .5f) * .25f + .25f; + factor = Mth.sin(AnimationTickHolder.getRenderTime() * .5f) * .25f + .25f; } else { - Vector3d center = VecHelper.getCenterOf(new BlockPos(context.position)); + Vec3 center = VecHelper.getCenterOf(new BlockPos(context.position)); double distance = context.position.distanceTo(center); double nextDistance = context.position.add(context.motion) .distanceTo(center); - factor = .5f - MathHelper.clamp(MathHelper.lerp(AnimationTickHolder.getPartialTicks(), distance, nextDistance), 0, 1); + factor = .5f - Mth.clamp(Mth.lerp(AnimationTickHolder.getPartialTicks(), distance, nextDistance), 0, 1); } - Vector3d offset = Vector3d.atLowerCornerOf(facing.getNormal()).scale(factor); + Vec3 offset = Vec3.atLowerCornerOf(facing.getNormal()).scale(factor); - MatrixStack ms = new MatrixStack(); + PoseStack ms = new PoseStack(); MatrixTransformStack msr = MatrixTransformStack.of(ms); msr.translate(context.localPos) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerBlock.java index 7848fe0dcd..8c9410571e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerBlock.java @@ -11,6 +11,7 @@ import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.InteractionHand; @@ -68,7 +69,7 @@ public class DeployerBlock extends DirectionalAxisKineticBlock implements ITE { if (te.player != null && !isMoving) { - te.player.inventory.dropAll(); + te.player.getInventory().dropAll(); te.overflowItems.forEach(itemstack -> te.player.drop(itemstack, true, false)); te.player.remove(); te.player = null; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFakePlayer.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFakePlayer.java index 912421cee8..11f9c2d7c3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFakePlayer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFakePlayer.java @@ -108,7 +108,7 @@ public class DeployerFakePlayer extends FakePlayer { if (trueSource != null && trueSource instanceof DeployerFakePlayer) { DeployerFakePlayer fakePlayer = (DeployerFakePlayer) trueSource; event.getDrops() - .forEach(stack -> fakePlayer.inventory.placeItemBackInInventory(trueSource.level, stack.getItem())); + .forEach(stack -> fakeplayer.getInventory().placeItemBackInInventory(trueSource.level, stack.getItem())); event.setCanceled(true); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java index 53cdc83019..485bf5300c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java @@ -123,8 +123,7 @@ public class DeployerHandler { return true; } - static void activate(DeployerFakePlayer player, Vec3 vec, BlockPos clickedPos, Vec3 extensionVector, - Mode mode) { + static void activate(DeployerFakePlayer player, Vec3 vec, BlockPos clickedPos, Vec3 extensionVector, Mode mode) { Multimap attributeModifiers = player.getMainHandItem() .getAttributeModifiers(EquipmentSlot.MAINHAND); player.getAttributes() @@ -134,8 +133,8 @@ public class DeployerHandler { .addTransientAttributeModifiers(attributeModifiers); } - private static void activateInner(DeployerFakePlayer player, Vec3 vec, BlockPos clickedPos, - Vec3 extensionVector, Mode mode) { + private static void activateInner(DeployerFakePlayer player, Vec3 vec, BlockPos clickedPos, Vec3 extensionVector, + Mode mode) { Vec3 rayOrigin = vec.add(extensionVector.scale(3 / 2f + 1 / 64f)); Vec3 rayTarget = vec.add(extensionVector.scale(5 / 2f - 1 / 64f)); @@ -146,7 +145,8 @@ public class DeployerHandler { // Check for entities final ServerLevel world = player.getLevel(); - List entities = world.getEntitiesOfClass(Entity.class, new AABB(clickedPos)).stream() + List entities = world.getEntitiesOfClass(Entity.class, new AABB(clickedPos)) + .stream() .filter(e -> !(e instanceof AbstractContraptionEntity)) .collect(Collectors.toList()); InteractionHand hand = InteractionHand.MAIN_HAND; @@ -165,16 +165,16 @@ public class DeployerHandler { } if (cancelResult == null) { if (entity.interact(player, hand) - .consumesAction()){ + .consumesAction()) { if (entity instanceof AbstractVillager) { AbstractVillager villager = ((AbstractVillager) entity); if (villager.getTradingPlayer() instanceof DeployerFakePlayer) villager.setTradingPlayer(null); } success = true; - } - else if (entity instanceof LivingEntity && stack.interactLivingEntity(player, (LivingEntity) entity, hand) - .consumesAction()) + } else if (entity instanceof LivingEntity + && stack.interactLivingEntity(player, (LivingEntity) entity, hand) + .consumesAction()) success = true; } if (!success && stack.isEdible() && entity instanceof Player) { @@ -196,14 +196,15 @@ public class DeployerHandler { } entity.captureDrops(null); - capturedDrops.forEach(e -> player.inventory.placeItemBackInInventory(world, e.getItem())); + capturedDrops.forEach(e -> player.getInventory() + .placeItemBackInInventory(e.getItem())); if (success) return; } // Shoot ray ClipContext rayTraceContext = - new ClipContext(rayOrigin, rayTarget, Block.OUTLINE, Fluid.NONE, player); + new ClipContext(rayOrigin, rayTarget, ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player); BlockHitResult result = world.clip(rayTraceContext); if (result.getBlockPos() != clickedPos) result = new BlockHitResult(result.getLocation(), result.getDirection(), clickedPos, result.isInside()); @@ -225,7 +226,8 @@ public class DeployerHandler { LeftClickBlock event = ForgeHooks.onLeftClickBlock(player, clickedPos, face); if (event.isCanceled()) return; - if (BlockHelper.extinguishFire(world, player, clickedPos, face)) // FIXME: is there an equivalent in world, as there was in 1.15? + if (BlockHelper.extinguishFire(world, player, clickedPos, face)) // FIXME: is there an equivalent in world, + // as there was in 1.15? return; if (event.getUseBlock() != DENY) clickedState.attack(world, clickedPos, player); @@ -242,7 +244,7 @@ public class DeployerHandler { .getHitSound(), SoundSource.NEUTRAL, .25f, 1); if (progress >= 1) { - tryHarvestBlock(player.gameMode, clickedPos); + tryHarvestBlock(player, player.gameMode, clickedPos); world.destroyBlockProgress(player.getId(), clickedPos, -1); player.blockBreakingProgress = null; return; @@ -289,8 +291,7 @@ public class DeployerHandler { return; if (useItem == DENY) return; - if (item instanceof BlockItem - && !(item instanceof CartAssemblerBlockItem) + if (item instanceof BlockItem && !(item instanceof CartAssemblerBlockItem) && !clickedState.canBeReplaced(new BlockPlaceContext(itemusecontext))) return; @@ -338,11 +339,10 @@ public class DeployerHandler { player.stopUsingItem(); } - public static boolean tryHarvestBlock(ServerPlayerGameMode interactionManager, BlockPos pos) { + public static boolean tryHarvestBlock(ServerPlayer player, ServerPlayerGameMode interactionManager, BlockPos pos) { // <> PlayerInteractionManager#tryHarvestBlock - ServerLevel world = interactionManager.level; - ServerPlayer player = interactionManager.player; + ServerLevel world = player.getLevel(); BlockState blockstate = world.getBlockState(pos); GameType gameType = interactionManager.getGameModeForPlayer(); @@ -364,14 +364,12 @@ public class DeployerHandler { if (prevHeldItem.isEmpty() && !heldItem.isEmpty()) net.minecraftforge.event.ForgeEventFactory.onPlayerDestroyItem(player, heldItem, InteractionHand.MAIN_HAND); - BlockPos posUp = pos.above(); BlockState stateUp = world.getBlockState(posUp); if (blockstate.getBlock() instanceof DoublePlantBlock && blockstate.getValue(DoublePlantBlock.HALF) == DoubleBlockHalf.LOWER && stateUp.getBlock() == blockstate.getBlock() - && stateUp.getValue(DoublePlantBlock.HALF) == DoubleBlockHalf.UPPER - ) { + && stateUp.getValue(DoublePlantBlock.HALF) == DoubleBlockHalf.UPPER) { // hack to prevent DoublePlantBlock from dropping a duplicate item world.setBlock(pos, Blocks.AIR.defaultBlockState(), 35); world.setBlock(posUp, Blocks.AIR.defaultBlockState(), 35); @@ -386,7 +384,7 @@ public class DeployerHandler { return true; Block.getDrops(blockstate, world, pos, tileentity, player, prevHeldItem) - .forEach(item -> player.inventory.placeItemBackInInventory(world, item)); + .forEach(item -> player.getInventory().placeItemBackInInventory(item)); blockstate.spawnAfterBreak(world, pos, prevHeldItem); return true; } @@ -413,7 +411,7 @@ public class DeployerHandler { world.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.BEEHIVE_SHEAR, SoundSource.NEUTRAL, 1.0F, 1.0F); // <> BeehiveBlock#dropHoneycomb - player.inventory.placeItemBackInInventory(world, new ItemStack(Items.HONEYCOMB, 3)); + player.getInventory().placeItemBackInInventory(new ItemStack(Items.HONEYCOMB, 3)); prevHeldItem.hurtAndBreak(1, player, s -> s.broadcastBreakEvent(hand)); success = true; } @@ -426,7 +424,7 @@ public class DeployerHandler { if (prevHeldItem.isEmpty()) player.setItemInHand(hand, honeyBottle); else - player.inventory.placeItemBackInInventory(world, honeyBottle); + player.getInventory().placeItemBackInInventory(honeyBottle); success = true; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java index c2eb65eb4f..1433f46408 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java @@ -17,8 +17,8 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.Vec3i; import net.minecraft.util.Mth; -import net.minecraft.util.math.vector.Vector3i; public class DeployerInstance extends ShaftInstance implements IDynamicInstance, ITickableInstance { @@ -117,8 +117,8 @@ public class DeployerInstance extends ShaftInstance implements IDynamicInstance, private void updatePosition() { float handLength = currentHand == AllBlockPartials.DEPLOYER_HAND_POINTING ? 0 : currentHand == AllBlockPartials.DEPLOYER_HAND_HOLDING ? 4 / 16f : 3 / 16f; - float distance = Math.min(MathHelper.clamp(progress, 0, 1) * (tile.reach + handLength), 21 / 16f); - Vector3i facingVec = facing.getNormal(); + float distance = Math.min(Mth.clamp(progress, 0, 1) * (tile.reach + handLength), 21 / 16f); + Vec3i facingVec = facing.getNormal(); BlockPos blockPos = getInstancePosition(); float x = blockPos.getX() + ((float) facingVec.getX()) * distance; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java index 9eb1c6f368..65773a7f11 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java @@ -83,8 +83,8 @@ public class DeployerMovementBehaviour extends MovementBehaviour { .getNormal()); facingVec = context.rotation.apply(facingVec); Vec3 vec = context.position.subtract(facingVec.scale(2)); - player.yRot = AbstractContraptionEntity.yawFromVector(facingVec); - player.xRot = AbstractContraptionEntity.pitchFromVector(facingVec) - 90; + player.setYRot(AbstractContraptionEntity.yawFromVector(facingVec)); + player.setXRot(AbstractContraptionEntity.pitchFromVector(facingVec) - 90); DeployerHandler.activate(player, vec, pos, facingVec, mode); } @@ -183,8 +183,8 @@ public class DeployerMovementBehaviour extends MovementBehaviour { if (player == null) return; - context.tileData.put("Inventory", player.inventory.save(new ListTag())); - player.remove(); + context.tileData.put("Inventory", player.getInventory().save(new ListTag())); + player.discard(); } private void tryGrabbingItem(MovementContext context) { @@ -206,7 +206,7 @@ public class DeployerMovementBehaviour extends MovementBehaviour { DeployerFakePlayer player = getPlayer(context); if (player == null) return; - Inventory inv = player.inventory; + Inventory inv = player.getInventory(); ItemStack filter = getFilter(context); for (List list : Arrays.asList(inv.armor, inv.offhand, inv.items)) { @@ -237,7 +237,7 @@ public class DeployerMovementBehaviour extends MovementBehaviour { private DeployerFakePlayer getPlayer(MovementContext context) { if (!(context.temporaryData instanceof DeployerFakePlayer) && context.world instanceof ServerLevel) { DeployerFakePlayer deployerFakePlayer = new DeployerFakePlayer((ServerLevel) context.world); - deployerFakePlayer.inventory.load(context.tileData.getList("Inventory", NBT.TAG_COMPOUND)); + deployerFakePlayer.getInventory().load(context.tileData.getList("Inventory", NBT.TAG_COMPOUND)); if (context.data.contains("HeldItem")) deployerFakePlayer.setItemInHand(InteractionHand.MAIN_HAND, ItemStack.of(context.data.getCompound("HeldItem"))); context.tileData.remove("Inventory"); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovingInteraction.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovingInteraction.java index 57db0bcc0a..1774152dc7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovingInteraction.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovingInteraction.java @@ -55,7 +55,7 @@ public class DeployerMovingInteraction extends MovingInteractionBehaviour { if (!(ctx.temporaryData instanceof DeployerFakePlayer) && ctx.world instanceof ServerLevel) { DeployerFakePlayer deployerFakePlayer = new DeployerFakePlayer((ServerLevel) ctx.world); - deployerFakePlayer.inventory.load(ctx.tileData.getList("Inventory", Constants.NBT.TAG_COMPOUND)); + deployerFakeplayer.getInventory().load(ctx.tileData.getList("Inventory", Constants.NBT.TAG_COMPOUND)); ctx.temporaryData = fake = deployerFakePlayer; ctx.tileData.remove("Inventory"); } else diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java index af593e1848..3a25e799f8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java @@ -35,6 +35,7 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.Mth; import net.minecraft.world.Container; import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.level.ClipContext; @@ -81,9 +82,9 @@ public class DeployerTileEntity extends KineticTileEntity { PUNCH, USE } - public DeployerTileEntity(BlockEntityType type) { - super(type); - state = State.WAITING; + public DeployerTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); + this.state = State.WAITING; mode = Mode.USE; heldItem = ItemStack.EMPTY; redstoneLocked = false; @@ -108,7 +109,8 @@ public class DeployerTileEntity extends KineticTileEntity { if (!level.isClientSide) { player = new DeployerFakePlayer((ServerLevel) level); if (deferredInventoryList != null) { - player.inventory.load(deferredInventoryList); + player.getInventory() + .load(deferredInventoryList); deferredInventoryList = null; heldItem = player.getMainHandItem(); sendData(); @@ -156,15 +158,16 @@ public class DeployerTileEntity extends KineticTileEntity { } boolean changed = false; - for (int i = 0; i < player.inventory.getContainerSize(); i++) { + Inventory inventory = player.getInventory(); + for (int i = 0; i < inventory.getContainerSize(); i++) { if (overflowItems.size() > 10) break; - ItemStack item = player.inventory.getItem(i); + ItemStack item = inventory.getItem(i); if (item.isEmpty()) continue; if (item != stack || !filtering.test(item)) { overflowItems.add(item); - player.inventory.setItem(i, ItemStack.EMPTY); + inventory.setItem(i, ItemStack.EMPTY); changed = true; } } @@ -176,7 +179,8 @@ public class DeployerTileEntity extends KineticTileEntity { } Direction facing = getBlockState().getValue(FACING); - if (mode == Mode.USE && !DeployerHandler.shouldActivate(stack, level, worldPosition.relative(facing, 2), facing)) { + if (mode == Mode.USE + && !DeployerHandler.shouldActivate(stack, level, worldPosition.relative(facing, 2), facing)) { timer = getTimerSpeed() * 10; return; } @@ -218,8 +222,7 @@ public class DeployerTileEntity extends KineticTileEntity { .add(movementVector.scale(3 / 2f)); Vec3 rayTarget = VecHelper.getCenterOf(worldPosition) .add(movementVector.scale(5 / 2f)); - ClipContext rayTraceContext = - new ClipContext(rayOrigin, rayTarget, Block.OUTLINE, Fluid.NONE, player); + ClipContext rayTraceContext = new ClipContext(rayOrigin, rayTarget, Block.OUTLINE, Fluid.NONE, player); BlockHitResult result = level.clip(rayTraceContext); reach = (float) (.5f + Math.min(result.getLocation() .subtract(rayOrigin) @@ -229,7 +232,8 @@ public class DeployerTileEntity extends KineticTileEntity { } public boolean startBoop(Direction facing) { - if (!level.isEmptyBlock(worldPosition.relative(facing, 1)) || !level.isEmptyBlock(worldPosition.relative(facing, 2))) + if (!level.isEmptyBlock(worldPosition.relative(facing, 1)) + || !level.isEmptyBlock(worldPosition.relative(facing, 2))) return false; BlockPos otherDeployer = worldPosition.relative(facing, 4); if (!level.isLoaded(otherDeployer)) @@ -270,8 +274,7 @@ public class DeployerTileEntity extends KineticTileEntity { deployerTile.sendData(); // award nearby players - List players = - level.getEntitiesOfClass(ServerPlayer.class, new AABB(worldPosition).inflate(9)); + List players = level.getEntitiesOfClass(ServerPlayer.class, new AABB(worldPosition).inflate(9)); players.forEach(AllTriggers.DEPLOYER_BOOP::trigger); } @@ -280,8 +283,8 @@ public class DeployerTileEntity extends KineticTileEntity { Direction direction = getBlockState().getValue(FACING); Vec3 center = VecHelper.getCenterOf(worldPosition); BlockPos clickedPos = worldPosition.relative(direction, 2); - player.yRot = direction.toYRot(); - player.xRot = direction == Direction.UP ? -90 : direction == Direction.DOWN ? 90 : 0; + player.setXRot(direction == Direction.UP ? -90 : direction == Direction.DOWN ? 90 : 0); + player.setYRot(direction.toYRot()); if (direction == Direction.DOWN && TileEntityBehaviour.get(level, clickedPos, TransportedItemStackHandlerBehaviour.TYPE) != null) @@ -300,7 +303,7 @@ public class DeployerTileEntity extends KineticTileEntity { } @Override - protected void fromTag(BlockState blockState, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { state = NBTHelper.readEnum(compound, "State", State.class); mode = NBTHelper.readEnum(compound, "Mode", Mode.class); timer = compound.getInt("Timer"); @@ -310,7 +313,7 @@ public class DeployerTileEntity extends KineticTileEntity { overflowItems = NBTHelper.readItemList(compound.getList("Overflow", NBT.TAG_COMPOUND)); if (compound.contains("HeldItem")) heldItem = ItemStack.of(compound.getCompound("HeldItem")); - super.fromTag(blockState, compound, clientPacket); + super.fromTag(compound, clientPacket); if (!clientPacket) return; @@ -331,9 +334,11 @@ public class DeployerTileEntity extends KineticTileEntity { if (player != null) { ListTag invNBT = new ListTag(); - player.inventory.save(invNBT); + player.getInventory() + .save(invNBT); compound.put("Inventory", invNBT); - compound.put("HeldItem", player.getMainHandItem().serializeNBT()); + compound.put("HeldItem", player.getMainHandItem() + .serializeNBT()); compound.put("Overflow", NBTHelper.writeItemList(overflowItems)); } else if (deferredInventoryList != null) { compound.put("Inventory", deferredInventoryList); @@ -464,7 +469,7 @@ public class DeployerTileEntity extends KineticTileEntity { // creates deployer recipes event.addRecipe(() -> SequencedAssemblyRecipe.getRecipe(level, event.getInventory(), - AllRecipeTypes.DEPLOYING.getType(), DeployerApplicationRecipe.class), 100); + AllRecipeTypes.DEPLOYING.getType(), DeployerApplicationRecipe.class), 100); event.addRecipe(() -> AllRecipeTypes.DEPLOYING.find(event.getInventory(), level), 50); // post the event, get result diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/AirCurrent.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/AirCurrent.java index 967c14a8c2..560cdd5ead 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/AirCurrent.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/fan/AirCurrent.java @@ -391,7 +391,7 @@ public class AirCurrent { public static boolean isPlayerCreativeFlying(Entity entity) { if (entity instanceof Player) { Player player = (Player) entity; - return player.isCreative() && player.abilities.flying; + return player.isCreative() && player.getAbilities().flying; } return false; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanTileEntity.java index d0e704be62..6d5fb80474 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanTileEntity.java @@ -9,6 +9,7 @@ import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlo import com.simibubi.create.content.logistics.block.chute.ChuteTileEntity; import com.simibubi.create.foundation.config.AllConfigs; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -28,8 +29,8 @@ public class EncasedFanTileEntity extends GeneratingKineticTileEntity implements protected boolean updateAirFlow; protected boolean updateGenerator; - public EncasedFanTileEntity(BlockEntityType type) { - super(type); + public EncasedFanTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); isGenerator = false; airCurrent = new AirCurrent(this); updateAirFlow = true; @@ -37,9 +38,9 @@ public class EncasedFanTileEntity extends GeneratingKineticTileEntity implements } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); - if (!wasMoved) + protected void fromTag(CompoundTag compound, boolean clientPacket) { + super.fromTag(compound, clientPacket); + if (!wasMoved) isGenerator = compound.getBoolean("Generating"); if (clientPacket) airCurrent.rebuild(); @@ -81,7 +82,8 @@ public class EncasedFanTileEntity extends GeneratingKineticTileEntity implements shouldGenerate = false; if (shouldGenerate) - shouldGenerate = level != null && level.hasNeighborSignal(worldPosition) && level.isLoaded(worldPosition.below()) && blockBelowIsHot(); + shouldGenerate = level != null && level.hasNeighborSignal(worldPosition) + && level.isLoaded(worldPosition.below()) && blockBelowIsHot(); if (shouldGenerate == isGenerator) return; @@ -94,8 +96,7 @@ public class EncasedFanTileEntity extends GeneratingKineticTileEntity implements return false; BlockState checkState = level.getBlockState(worldPosition.below()); - if (!checkState.getBlock() - .is(AllBlockTags.FAN_HEATERS.tag)) + if (!checkState.is(AllBlockTags.FAN_HEATERS.tag)) return false; if (checkState.hasProperty(BlazeBurnerBlock.HEAT_LEVEL) && !checkState.getValue(BlazeBurnerBlock.HEAT_LEVEL) @@ -176,7 +177,7 @@ public class EncasedFanTileEntity extends GeneratingKineticTileEntity implements super.tick(); boolean server = !level.isClientSide || isVirtual(); - + if (server && airCurrentUpdateCooldown-- <= 0) { airCurrentUpdateCooldown = AllConfigs.SERVER.kinetics.fanBlockCheckRate.get(); updateAirFlow = true; @@ -187,7 +188,7 @@ public class EncasedFanTileEntity extends GeneratingKineticTileEntity implements airCurrent.rebuild(); sendData(); } - + if (updateGenerator) { updateGenerator = false; updateGenerator(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/IAirCurrentSource.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/IAirCurrentSource.java index b36cb29931..2db3fb22d2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/IAirCurrentSource.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/fan/IAirCurrentSource.java @@ -5,6 +5,7 @@ import javax.annotation.Nullable; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.config.CKinetics; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.Mth; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/NozzleBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/NozzleBlock.java index cd981c507d..3158aa27de 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/NozzleBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/fan/NozzleBlock.java @@ -6,6 +6,7 @@ import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.foundation.block.WrenchableDirectionalBlock; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.InteractionResult; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/NozzleTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/NozzleTileEntity.java index 34f7ffd900..9d924dfb60 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/NozzleTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/fan/NozzleTileEntity.java @@ -33,8 +33,8 @@ public class NozzleTileEntity extends SmartTileEntity { private boolean pushing; private BlockPos fanPos; - public NozzleTileEntity(BlockEntityType type) { - super(type); + public NozzleTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); setLazyTickRate(5); } @@ -51,8 +51,8 @@ public class NozzleTileEntity extends SmartTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); + protected void fromTag(CompoundTag compound, boolean clientPacket) { + super.fromTag(compound, clientPacket); if (!clientPacket) return; range = compound.getFloat("Range"); @@ -176,7 +176,7 @@ public class NozzleTileEntity extends SmartTileEntity { level.explode(null, center.x, center.y, center.z, 2, BlockInteraction.NONE); for (Iterator iterator = pushingEntities.iterator(); iterator.hasNext();) { Entity entity = iterator.next(); - entity.remove(); + entity.discard(); iterator.remove(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java index 0e6aae8d91..3e8707597b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.contraptions.components.flywheel; -import static net.minecraft.state.properties.BlockStateProperties.HORIZONTAL_FACING; +import static net.minecraft.world.level.block.state.properties.BlockStateProperties.HORIZONTAL_FACING; import java.util.Collections; import java.util.List; @@ -13,7 +13,7 @@ import com.jozufozu.flywheel.backend.material.Material; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.jozufozu.flywheel.util.transform.MatrixTransformStack; -import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileInstance; import com.simibubi.create.content.contraptions.base.RotatingData; @@ -21,31 +21,31 @@ import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.core.Direction; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.Mth; import net.minecraft.world.level.block.Rotation; import net.minecraft.world.level.block.state.BlockState; public class FlyWheelInstance extends KineticTileInstance implements IDynamicInstance { - protected final Direction facing; - protected final Direction connection; + protected final Direction facing; + protected final Direction connection; - protected boolean connectedLeft; - protected float connectorAngleMult; + protected boolean connectedLeft; + protected float connectorAngleMult; - protected final RotatingData shaft; + protected final RotatingData shaft; - protected final ModelData wheel; + protected final ModelData wheel; - protected List connectors; - protected ModelData upperRotating; - protected ModelData lowerRotating; - protected ModelData upperSliding; - protected ModelData lowerSliding; + protected List connectors; + protected ModelData upperRotating; + protected ModelData lowerRotating; + protected ModelData upperSliding; + protected ModelData lowerSliding; - protected float lastAngle = Float.NaN; + protected float lastAngle = Float.NaN; - public FlyWheelInstance(MaterialManager modelManager, FlywheelTileEntity tile) { + public FlyWheelInstance(MaterialManager modelManager, FlywheelTileEntity tile) { super(modelManager, tile); facing = blockState.getValue(HORIZONTAL_FACING); @@ -53,145 +53,154 @@ public class FlyWheelInstance extends KineticTileInstance im shaft = setup(shaftModel().createInstance()); BlockState referenceState = blockState.rotate(Rotation.CLOCKWISE_90); - wheel = getTransformMaterial().getModel(AllBlockPartials.FLYWHEEL, referenceState, referenceState.getValue(HORIZONTAL_FACING)).createInstance(); + wheel = getTransformMaterial() + .getModel(AllBlockPartials.FLYWHEEL, referenceState, referenceState.getValue(HORIZONTAL_FACING)) + .createInstance(); connection = FlywheelBlock.getConnection(blockState); if (connection != null) { connectedLeft = blockState.getValue(FlywheelBlock.CONNECTION) == FlywheelBlock.ConnectionState.LEFT; - boolean flipAngle = connection.getAxis() == Direction.Axis.X ^ connection.getAxisDirection() == Direction.AxisDirection.NEGATIVE; + boolean flipAngle = connection.getAxis() == Direction.Axis.X + ^ connection.getAxisDirection() == Direction.AxisDirection.NEGATIVE; connectorAngleMult = flipAngle ? -1 : 1; Material mat = getTransformMaterial(); - upperRotating = mat.getModel(AllBlockPartials.FLYWHEEL_UPPER_ROTATING, blockState).createInstance(); - lowerRotating = mat.getModel(AllBlockPartials.FLYWHEEL_LOWER_ROTATING, blockState).createInstance(); - upperSliding = mat.getModel(AllBlockPartials.FLYWHEEL_UPPER_SLIDING, blockState).createInstance(); - lowerSliding = mat.getModel(AllBlockPartials.FLYWHEEL_LOWER_SLIDING, blockState).createInstance(); + upperRotating = mat.getModel(AllBlockPartials.FLYWHEEL_UPPER_ROTATING, blockState) + .createInstance(); + lowerRotating = mat.getModel(AllBlockPartials.FLYWHEEL_LOWER_ROTATING, blockState) + .createInstance(); + upperSliding = mat.getModel(AllBlockPartials.FLYWHEEL_UPPER_SLIDING, blockState) + .createInstance(); + lowerSliding = mat.getModel(AllBlockPartials.FLYWHEEL_LOWER_SLIDING, blockState) + .createInstance(); connectors = Lists.newArrayList(upperRotating, lowerRotating, upperSliding, lowerSliding); } else { - connectors = Collections.emptyList(); - } + connectors = Collections.emptyList(); + } - animate(tile.angle); - } + animate(tile.angle); + } - @Override - public void beginFrame() { + @Override + public void beginFrame() { - float partialTicks = AnimationTickHolder.getPartialTicks(); + float partialTicks = AnimationTickHolder.getPartialTicks(); - float speed = tile.visualSpeed.get(partialTicks) * 3 / 10f; - float angle = tile.angle + speed * partialTicks; + float speed = tile.visualSpeed.get(partialTicks) * 3 / 10f; + float angle = tile.angle + speed * partialTicks; - if (Math.abs(angle - lastAngle) < 0.001) return; + if (Math.abs(angle - lastAngle) < 0.001) + return; - animate(angle); + animate(angle); - lastAngle = angle; - } + lastAngle = angle; + } - private void animate(float angle) { - MatrixStack ms = new MatrixStack(); - MatrixTransformStack msr = MatrixTransformStack.of(ms); + private void animate(float angle) { + PoseStack ms = new PoseStack(); + MatrixTransformStack msr = MatrixTransformStack.of(ms); - msr.translate(getInstancePosition()); + msr.translate(getInstancePosition()); - if (connection != null) { - float rotation = angle * connectorAngleMult; + if (connection != null) { + float rotation = angle * connectorAngleMult; - ms.pushPose(); - rotateToFacing(msr, connection); + ms.pushPose(); + rotateToFacing(msr, connection); - ms.pushPose(); - transformConnector(msr, true, true, rotation, connectedLeft); - upperRotating.setTransform(ms); - ms.popPose(); + ms.pushPose(); + transformConnector(msr, true, true, rotation, connectedLeft); + upperRotating.setTransform(ms); + ms.popPose(); - ms.pushPose(); - transformConnector(msr, false, true, rotation, connectedLeft); - lowerRotating.setTransform(ms); - ms.popPose(); + ms.pushPose(); + transformConnector(msr, false, true, rotation, connectedLeft); + lowerRotating.setTransform(ms); + ms.popPose(); - ms.pushPose(); - transformConnector(msr, true, false, rotation, connectedLeft); - upperSliding.setTransform(ms); - ms.popPose(); + ms.pushPose(); + transformConnector(msr, true, false, rotation, connectedLeft); + upperSliding.setTransform(ms); + ms.popPose(); - ms.pushPose(); - transformConnector(msr, false, false, rotation, connectedLeft); - lowerSliding.setTransform(ms); - ms.popPose(); + ms.pushPose(); + transformConnector(msr, false, false, rotation, connectedLeft); + lowerSliding.setTransform(ms); + ms.popPose(); - ms.popPose(); - } + ms.popPose(); + } - msr.centre() - .rotate(Direction.get(Direction.AxisDirection.POSITIVE, facing.getAxis()), AngleHelper.rad(angle)) - .unCentre(); + msr.centre() + .rotate(Direction.get(Direction.AxisDirection.POSITIVE, facing.getAxis()), AngleHelper.rad(angle)) + .unCentre(); - wheel.setTransform(ms); - } + wheel.setTransform(ms); + } - @Override - public void update() { - updateRotation(shaft); - } + @Override + public void update() { + updateRotation(shaft); + } - @Override - public void updateLight() { - relight(pos, shaft, wheel); + @Override + public void updateLight() { + relight(pos, shaft, wheel); - if (connection != null) { - relight(this.pos.relative(connection), connectors.stream()); - } - } + if (connection != null) { + relight(this.pos.relative(connection), connectors.stream()); + } + } - @Override - public void remove() { - shaft.delete(); - wheel.delete(); + @Override + public void remove() { + shaft.delete(); + wheel.delete(); - connectors.forEach(InstanceData::delete); - connectors.clear(); - } + connectors.forEach(InstanceData::delete); + connectors.clear(); + } - protected Instancer shaftModel() { + protected Instancer shaftModel() { Direction opposite = facing.getOpposite(); return getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, blockState, opposite); } - protected void transformConnector(MatrixTransformStack ms, boolean upper, boolean rotating, float angle, boolean flip) { - float shift = upper ? 1 / 4f : -1 / 8f; - float offset = upper ? 1 / 4f : 1 / 4f; - float radians = (float) (angle / 180 * Math.PI); - float shifting = MathHelper.sin(radians) * shift + offset; + protected void transformConnector(MatrixTransformStack ms, boolean upper, boolean rotating, float angle, + boolean flip) { + float shift = upper ? 1 / 4f : -1 / 8f; + float offset = upper ? 1 / 4f : 1 / 4f; + float radians = (float) (angle / 180 * Math.PI); + float shifting = Mth.sin(radians) * shift + offset; - float maxAngle = upper ? -5 : -15; - float minAngle = upper ? -45 : 5; - float barAngle = 0; + float maxAngle = upper ? -5 : -15; + float minAngle = upper ? -45 : 5; + float barAngle = 0; - if (rotating) - barAngle = MathHelper.lerp((MathHelper.sin((float) (radians + Math.PI / 2)) + 1) / 2, minAngle, maxAngle); + if (rotating) + barAngle = Mth.lerp((Mth.sin((float) (radians + Math.PI / 2)) + 1) / 2, minAngle, maxAngle); - float pivotX = (upper ? 8f : 3f) / 16; - float pivotY = (upper ? 8f : 2f) / 16; - float pivotZ = (upper ? 23f : 21.5f) / 16f; + float pivotX = (upper ? 8f : 3f) / 16; + float pivotY = (upper ? 8f : 2f) / 16; + float pivotZ = (upper ? 23f : 21.5f) / 16f; - ms.translate(pivotX, pivotY, pivotZ + shifting); - if (rotating) - ms.rotate(Direction.EAST, AngleHelper.rad(barAngle)); - ms.translate(-pivotX, -pivotY, -pivotZ); + ms.translate(pivotX, pivotY, pivotZ + shifting); + if (rotating) + ms.rotate(Direction.EAST, AngleHelper.rad(barAngle)); + ms.translate(-pivotX, -pivotY, -pivotZ); - if (flip && !upper) - ms.translate(9 / 16f, 0, 0); - } + if (flip && !upper) + ms.translate(9 / 16f, 0, 0); + } - protected void rotateToFacing(MatrixTransformStack buffer, Direction facing) { - buffer.centre() - .rotate(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(facing))) - .unCentre(); - } + protected void rotateToFacing(MatrixTransformStack buffer, Direction facing) { + buffer.centre() + .rotate(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(facing))) + .unCentre(); + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelTileEntity.java index fde5bdca8c..3fcbb19d98 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelTileEntity.java @@ -3,6 +3,7 @@ package com.simibubi.create.content.contraptions.components.flywheel; import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity; import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingValue; +import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -18,8 +19,8 @@ public class FlywheelTileEntity extends GeneratingKineticTileEntity { InterpolatedChasingValue visualSpeed = new InterpolatedChasingValue(); float angle; - public FlywheelTileEntity(BlockEntityType type) { - super(type); + public FlywheelTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } public void setRotation(float speed, float capacity) { @@ -62,11 +63,11 @@ public class FlywheelTileEntity extends GeneratingKineticTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { generatedSpeed = compound.getFloat("GeneratedSpeed"); generatedCapacity = compound.getFloat("GeneratedCapacity"); stoppingCooldown = compound.getInt("Cooldown"); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); if (clientPacket) visualSpeed.withSpeed(1 / 32f) .target(getGeneratedSpeed()); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineTileEntity.java index 817ee8ca25..2c3fe1237c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineTileEntity.java @@ -24,8 +24,8 @@ public class EngineTileEntity extends SmartTileEntity implements IInstanceRender public float appliedSpeed; protected FlywheelTileEntity poweredWheel; - public EngineTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public EngineTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineTileEntity.java index f216e6b4d9..1851c58782 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineTileEntity.java @@ -3,14 +3,15 @@ package com.simibubi.create.content.contraptions.components.flywheel.engine; import com.simibubi.create.AllBlocks; import com.simibubi.create.foundation.block.BlockStressValues; +import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.AbstractFurnaceBlock; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; public class FurnaceEngineTileEntity extends EngineTileEntity { - public FurnaceEngineTileEntity(BlockEntityType type) { - super(type); + public FurnaceEngineTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneBlock.java index 151089610c..c1ed778238 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneBlock.java @@ -68,14 +68,14 @@ public class MillstoneBlock extends KineticBlock implements ITE type) { - super(type); + public MillstoneTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); inputInv = new ItemStackHandler(1); outputInv = new ItemStackHandler(9); capability = LazyOptional.of(MillstoneInventoryHandler::new); @@ -162,11 +163,11 @@ public class MillstoneTileEntity extends KineticTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { timer = compound.getInt("Timer"); inputInv.deserializeNBT(compound.getCompound("InputInventory")); outputInv.deserializeNBT(compound.getCompound("OutputInventory")); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); } public int getProcessingSpeed() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java index 2d2ef9a71b..7a73368329 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java @@ -20,6 +20,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.VecHelper; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.core.particles.ItemParticleOption; import net.minecraft.core.particles.ParticleOptions; @@ -49,8 +50,8 @@ public class MechanicalMixerTileEntity extends BasinOperatingTileEntity { public int processingTicks; public boolean running; - public MechanicalMixerTileEntity(BlockEntityType type) { - super(type); + public MechanicalMixerTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } public float getRenderedHeadOffset(float partialTicks) { @@ -94,10 +95,10 @@ public class MechanicalMixerTileEntity extends BasinOperatingTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { running = compound.getBoolean("Running"); runningTicks = compound.getInt("Ticks"); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); if (clientPacket && hasLevel()) getBasin().ifPresent(bte -> bte.setAreFluidsMoving(running && runningTicks <= 20)); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixerInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixerInstance.java index ee7deed5d4..96b958b951 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixerInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixerInstance.java @@ -8,6 +8,8 @@ import com.simibubi.create.content.contraptions.base.RotatingData; import com.simibubi.create.content.contraptions.base.ShaftlessCogInstance; import com.simibubi.create.foundation.utility.AnimationTickHolder; +import net.minecraft.core.Direction; + public class MixerInstance extends ShaftlessCogInstance implements IDynamicInstance { private final RotatingData mixerHead; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorTileEntity.java index 947abccb73..864aba99da 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorTileEntity.java @@ -11,15 +11,17 @@ import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollVal import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueBehaviour.StepContext; import com.simibubi.create.foundation.utility.Lang; +import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; public class CreativeMotorTileEntity extends GeneratingKineticTileEntity { public static final int DEFAULT_SPEED = 16; protected ScrollValueBehaviour generatedSpeed; - public CreativeMotorTileEntity(BlockEntityType type) { - super(type); + public CreativeMotorTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java index aaf645018f..87b4755849 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java @@ -24,6 +24,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemS import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.VecHelper; +import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.core.particles.ItemParticleOption; import net.minecraft.core.particles.ParticleTypes; @@ -64,8 +65,8 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { public Mode mode; public boolean finished; - public MechanicalPressTileEntity(BlockEntityType type) { - super(type); + public MechanicalPressTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); mode = Mode.WORLD; entityScanCooldown = ENTITY_SCAN; } @@ -80,12 +81,12 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { running = compound.getBoolean("Running"); mode = Mode.values()[compound.getInt("Mode")]; finished = compound.getBoolean("Finished"); prevRunningTicks = runningTicks = compound.getInt("Ticks"); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); if (clientPacket) { NBTHelper.iterateCompoundList(compound.getList("ParticleItems", NBT.TAG_COMPOUND), diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawBlock.java index 923cb7630e..afe3f4e2f0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawBlock.java @@ -11,6 +11,7 @@ import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawInstance.java index 1e8751511b..8a44690e66 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawInstance.java @@ -1,40 +1,33 @@ package com.simibubi.create.content.contraptions.components.saw; -import static net.minecraft.state.properties.BlockStateProperties.FACING; - -import com.net.minimport com.jozufozu.flywheel.backend.instancing.Instancer; +import com.jozufozu.flywheel.backend.instancing.Instancer; import com.jozufozu.flywheel.backend.material.MaterialManager; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.RotatingData; -import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; -import net.minecraft.core.Direction; -import net.minecraft.world.level.block.Rotation; -import net.minecraft.world.level.block.state.BlockState; - -ecraft.world.level.block.state.properties.BlockStatePropertiesport com.jozufozu.flywheel.backend.material.MaterialManager; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.RotatingData; import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraft.util.Rotation; +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; public class SawInstance extends SingleRotatingInstance { - public SawInstance(MaterialManager modelManager, KineticTileEntity tile) { - super(modelManager, tile); - } + public SawInstance(MaterialManager modelManager, KineticTileEntity tile) { + super(modelManager, tile); + } - @Override - protected Instancer getModel() { - if (blockState.getValue(FACING).getAxis().isHorizontal()) { + @Override + protected Instancer getModel() { + if (blockState.getValue(BlockStateProperties.FACING) + .getAxis() + .isHorizontal()) { BlockState referenceState = blockState.rotate(tile.getLevel(), tile.getBlockPos(), Rotation.CLOCKWISE_180); - Direction facing = referenceState.getValue(FACING); + Direction facing = referenceState.getValue(BlockStateProperties.FACING); return getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, referenceState, facing); } else { return getRotatingMaterial().getModel(shaft()); } - } + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java index 7e8d37d575..4c76089ecf 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java @@ -28,6 +28,7 @@ import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.foundation.utility.recipe.RecipeConditions; import com.simibubi.create.foundation.utility.recipe.RecipeFinder; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Registry; @@ -84,8 +85,8 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity { private ItemStack playEvent; - public SawTileEntity(BlockEntityType type) { - super(type); + public SawTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); inventory = new ProcessingInventory(this::start).withSlotLimit(!AllConfigs.SERVER.recipes.bulkCutting.get()); inventory.remainingTime = -1; recipeIndex = 0; @@ -114,8 +115,8 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); + protected void fromTag(CompoundTag compound, boolean clientPacket) { + super.fromTag(compound, clientPacket); inventory.deserializeNBT(compound.getCompound("Inventory")); recipeIndex = compound.getInt("RecipeIndex"); if (compound.contains("PlayEvent")) @@ -383,7 +384,7 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity { ItemStack remainder = inventory.insertItem(0, entity.getItem() .copy(), false); if (remainder.isEmpty()) - entity.remove(); + entity.discard(); else entity.setItem(remainder); } @@ -444,9 +445,11 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity { @Override public void onBlockBroken(BlockState stateToBreak) { - Optional dynamicTree = TreeCutter.findDynamicTree(stateToBreak.getBlock(), breakingPos); + Optional dynamicTree = + TreeCutter.findDynamicTree(stateToBreak.getBlock(), breakingPos); if (dynamicTree.isPresent()) { - dynamicTree.get().destroyBlocks(level, null, this::dropItemFromCutTree); + dynamicTree.get() + .destroyBlocks(level, null, this::dropItemFromCutTree); return; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java index 7d7bfe4525..4482ec5bec 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java @@ -51,6 +51,7 @@ import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.fml.util.ObfuscationReflectionHelper; import net.minecraftforge.fmllegacy.common.registry.IEntityAdditionalSpawnData; import net.minecraftforge.fmllegacy.network.NetworkHooks; import net.minecraftforge.fmllegacy.network.PacketDistributor; @@ -58,7 +59,7 @@ import net.minecraftforge.fmllegacy.network.PacketDistributor; public abstract class AbstractContraptionEntity extends Entity implements IEntityAdditionalSpawnData { private static final EntityDataAccessor STALLED = - SynchedEntityData.defineId(AbstractContraptionEntity.class, EntityDataSerializers.BOOLEAN); + SynchedEntityData.defineId(AbstractContraptionEntity.class, EntityDataSerializers.BOOLEAN); public final Map collidingEntities; @@ -146,7 +147,8 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit if (seat == null) return null; Vec3 transformedVector = toGlobalVector(Vec3.atLowerCornerOf(seat) - .add(.5, passenger.getMyRidingOffset() + ySize - .15f, .5), partialTicks).add(VecHelper.getCenterOf(BlockPos.ZERO)) + .add(.5, passenger.getMyRidingOffset() + ySize - .15f, .5), partialTicks) + .add(VecHelper.getCenterOf(BlockPos.ZERO)) .subtract(0.5, ySize, 0.5); return transformedVector; } @@ -165,8 +167,8 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit int indexOfSeat = contraption.getSeats() .indexOf(localPos); if (indexOfSeat == -1) - return contraption.interactors.containsKey(localPos) - && contraption.interactors.get(localPos).handlePlayerInteraction(player, interactionHand, localPos, this); + return contraption.interactors.containsKey(localPos) && contraption.interactors.get(localPos) + .handlePlayerInteraction(player, interactionHand, localPos, this); // Eject potential existing passenger Entity toDismount = null; @@ -218,7 +220,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit @Override public final void tick() { if (contraption == null) { - remove(); + discard(); return; } @@ -394,7 +396,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit int estimatedPacketSize = byteArray.length; if (estimatedPacketSize > 2_000_000) { Create.LOGGER.warn("Could not send Contraption Spawn Data (Packet too big): " - + getContraption().getType().id + " @" + position() + " (" + getUUID().toString() + ")"); + + getContraption().getType().id + " @" + position() + " (" + getUUID().toString() + ")"); buffer.writeNbt(new CompoundTag()); return; } @@ -446,7 +448,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit if (contraption == null) return; - remove(); + discard(); StructureTransform transform = makeStructureTransform(); AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> this), @@ -483,16 +485,14 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit } } - @SuppressWarnings("deprecation") @Override - public void remove(boolean keepData) { - if (!level.isClientSide && !removed && contraption != null) { + public void remove(RemovalReason p_146834_) { + if (!level.isClientSide && !isRemoved() && contraption != null) if (!ticking) contraption.stop(level); - } if (contraption != null) contraption.onEntityRemoved(this); - super.remove(keepData); + super.remove(p_146834_); } protected abstract StructureTransform makeStructureTransform(); @@ -514,7 +514,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit super.onRemovedFromWorld(); if (level != null && level.isClientSide) return; - getPassengers().forEach(Entity::remove); + getPassengers().forEach(Entity::discard); } @Override @@ -551,14 +551,14 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit protected abstract void handleStallInformation(float x, float y, float z, float angle); @Override - @SuppressWarnings("deprecation") public CompoundTag saveWithoutId(CompoundTag nbt) { Vec3 vec = position(); List passengers = getPassengers(); for (Entity entity : passengers) { - // setPos has world accessing side-effects when removed == false - entity.removed = true; + // setPos has world accessing side-effects when removed == null + String srg = "f_146795_"; + ObfuscationReflectionHelper.setPrivateValue(Entity.class, entity, RemovalReason.UNLOADED_TO_CHUNK, srg); // Gather passengers into same chunk when saving Vec3 prevVec = entity.position(); @@ -566,7 +566,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit // Super requires all passengers to not be removed in order to write them to the // tag - entity.removed = false; + ObfuscationReflectionHelper.setPrivateValue(Entity.class, entity, null, srg); } CompoundTag tag = super.saveWithoutId(nbt); @@ -639,10 +639,10 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit } @Override - public boolean hasOnePlayerPassenger() { + public boolean hasExactlyOnePlayerPassenger() { return false; } - + @OnlyIn(Dist.CLIENT) public abstract void doLocalTransforms(float partialTicks, PoseStack[] matrixStacks); @@ -679,18 +679,17 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit } - @Override protected boolean updateInWaterStateAndDoFluidPushing() { /* - * Override this with an empty method to reduce enormous calculation time when contraptions are in water - * WARNING: THIS HAS A BUNCH OF SIDE EFFECTS! - * - Fluids will not try to change contraption movement direction - * - this.inWater and this.isInWater() will return unreliable data - * - entities riding a contraption will not cause water splashes (seats are their own entity so this should be fine) - * - fall distance is not reset when the contraption is in water - * - this.eyesInWater and this.canSwim() will always be false - * - swimming state will never be updated + * Override this with an empty method to reduce enormous calculation time when + * contraptions are in water WARNING: THIS HAS A BUNCH OF SIDE EFFECTS! - Fluids + * will not try to change contraption movement direction - this.inWater and + * this.isInWater() will return unreliable data - entities riding a contraption + * will not cause water splashes (seats are their own entity so this should be + * fine) - fall distance is not reset when the contraption is in water - + * this.eyesInWater and this.canSwim() will always be false - swimming state + * will never be updated */ return false; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java index 86abfde980..39042c14cb 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java @@ -79,8 +79,6 @@ import net.minecraft.nbt.NbtUtils; import net.minecraft.nbt.Tag; import net.minecraft.network.protocol.game.DebugPackets; import net.minecraft.server.level.ServerLevel; -import net.minecraft.util.math.shapes.IBooleanFunction; -import net.minecraft.util.math.shapes.VoxelShapes; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.ai.village.poi.PoiType; import net.minecraft.world.item.ItemStack; @@ -105,10 +103,11 @@ import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.material.PushReaction; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.shapes.BooleanOp; +import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.model.pipeline.BlockInfo; import net.minecraftforge.common.util.Constants.BlockFlags; import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.fluids.FluidStack; @@ -625,9 +624,9 @@ public abstract class Contraption { protected void addBlock(BlockPos pos, Pair pair) { StructureBlockInfo captured = pair.getKey(); BlockPos localPos = pos.subtract(anchor); - StructureBlockInfo blockInfo = new StructureBlockInfo(localPos, captured.state, captured.nbt); + StructureBlockInfo StructureBlockInfo = new StructureBlockInfo(localPos, captured.state, captured.nbt); - if (blocks.put(localPos, blockInfo) != null) + if (blocks.put(localPos, StructureBlockInfo) != null) return; bounds = bounds.minmax(new AABB(localPos)); @@ -637,7 +636,7 @@ public abstract class Contraption { if (te != null && MountedFluidStorage.canUseAsStorage(te)) fluidStorage.put(localPos, new MountedFluidStorage(te)); if (AllMovementBehaviours.contains(captured.state.getBlock())) - actors.add(MutablePair.of(blockInfo, null)); + actors.add(MutablePair.of(StructureBlockInfo, null)); if (AllInteractionBehaviours.contains(captured.state.getBlock())) interactors.put(localPos, AllInteractionBehaviours.of(captured.state.getBlock())); if (te instanceof CreativeCrateTileEntity @@ -903,7 +902,8 @@ public abstract class Contraption { blockList.forEach(e -> { CompoundTag c = (CompoundTag) e; - StructureBlockInfo info = usePalettedDeserialization ? readBlockInfo(c, finalPalette) : legacyReadBlockInfo(c); + StructureBlockInfo info = + usePalettedDeserialization ? readStructureBlockInfo(c, finalPalette) : legacyReadStructureBlockInfo(c); this.blocks.put(info.pos, info); @@ -918,10 +918,10 @@ public abstract class Contraption { tag.putInt("y", info.pos.getY()); tag.putInt("z", info.pos.getZ()); - BlockEntity te = BlockEntity.loadStatic(info.state, tag); + BlockEntity te = BlockEntity.loadStatic(info.pos, info.state, tag); if (te == null) return; - te.setLevelAndPosition(new ContraptionTileWorld(world, te, info), te.getBlockPos()); + te.setLevel(world); if (te instanceof KineticTileEntity) ((KineticTileEntity) te).setSpeed(0); te.getBlockState(); @@ -939,13 +939,14 @@ public abstract class Contraption { }); } - private static StructureBlockInfo readBlockInfo(CompoundTag blockListEntry, HashMapPalette palette) { + private static StructureBlockInfo readStructureBlockInfo(CompoundTag blockListEntry, + HashMapPalette palette) { return new StructureBlockInfo(BlockPos.of(blockListEntry.getLong("Pos")), Objects.requireNonNull(palette.valueFor(blockListEntry.getInt("State"))), blockListEntry.contains("Data") ? blockListEntry.getCompound("Data") : null); } - private static StructureBlockInfo legacyReadBlockInfo(CompoundTag blockListEntry) { + private static StructureBlockInfo legacyReadStructureBlockInfo(CompoundTag blockListEntry) { return new StructureBlockInfo(NbtUtils.readBlockPos(blockListEntry.getCompound("Pos")), NbtUtils.readBlockState(blockListEntry.getCompound("Block")), blockListEntry.contains("Data") ? blockListEntry.getCompound("Data") : null); @@ -956,7 +957,7 @@ public abstract class Contraption { .forEach(MountedStorage::removeStorageFromWorld); fluidStorage.values() .forEach(MountedFluidStorage::removeStorageFromWorld); - glueToRemove.forEach(SuperGlueEntity::remove); + glueToRemove.forEach(SuperGlueEntity::discard); for (boolean brittles : Iterate.trueAndFalse) { for (Iterator iterator = blocks.values() @@ -993,8 +994,10 @@ public abstract class Contraption { int flags = BlockFlags.IS_MOVING | BlockFlags.DEFAULT; world.sendBlockUpdated(add, block.state, Blocks.AIR.defaultBlockState(), flags); - // when the blockstate is set to air, the block's POI data is removed, but markAndNotifyBlock tries to - // remove it again, so to prevent an error from being logged by double-removal we add the POI data back now + // when the blockstate is set to air, the block's POI data is removed, but + // markAndNotifyBlock tries to + // remove it again, so to prevent an error from being logged by double-removal + // we add the POI data back now // (code copied from ServerWorld.onBlockStateChange) ServerLevel serverWorld = (ServerLevel) world; PoiType.forState(block.state) @@ -1041,7 +1044,8 @@ public abstract class Contraption { Block.dropResources(state, world, targetPos, null); continue; } - if (state.getBlock() instanceof SimpleWaterloggedBlock && state.hasProperty(BlockStateProperties.WATERLOGGED)) { + if (state.getBlock() instanceof SimpleWaterloggedBlock + && state.hasProperty(BlockStateProperties.WATERLOGGED)) { FluidState FluidState = world.getFluidState(targetPos); state = state.setValue(BlockStateProperties.WATERLOGGED, FluidState.getType() == Fluids.WATER); } @@ -1073,7 +1077,7 @@ public abstract class Contraption { if (tileEntity instanceof FluidTankTileEntity && tag.contains("LastKnownPos")) tag.put("LastKnownPos", NbtUtils.writeBlockPos(BlockPos.ZERO.below())); - tileEntity.load(block.state, tag); + tileEntity.load(tag); if (storage.containsKey(block.pos)) { MountedStorage mountedStorage = storage.get(block.pos); @@ -1217,11 +1221,11 @@ public abstract class Contraption { return seats; } - public Map getBlocks() { + public Map getBlocks() { return blocks; } - public List> getActors() { + public List> getActors() { return actors; } @@ -1248,15 +1252,15 @@ public abstract class Contraption { private void gatherBBsOffThread() { getContraptionWorld(); simplifiedEntityColliderProvider = CompletableFuture.supplyAsync(() -> { - VoxelShape combinedShape = VoxelShapes.empty(); - for (Entry entry : blocks.entrySet()) { - BlockInfo info = entry.getValue(); + VoxelShape combinedShape = Shapes.empty(); + for (Entry entry : blocks.entrySet()) { + StructureBlockInfo info = entry.getValue(); BlockPos localPos = entry.getKey(); VoxelShape collisionShape = info.state.getCollisionShape(world, localPos); if (collisionShape.isEmpty()) continue; - combinedShape = VoxelShapes.joinUnoptimized(combinedShape, - collisionShape.move(localPos.getX(), localPos.getY(), localPos.getZ()), IBooleanFunction.OR); + combinedShape = Shapes.joinUnoptimized(combinedShape, + collisionShape.move(localPos.getX(), localPos.getY(), localPos.getZ()), BooleanOp.OR); } return combinedShape.optimize() .toAabbs(); @@ -1297,10 +1301,10 @@ public abstract class Contraption { private static class ContraptionTileWorld extends WrappedWorld implements IFlywheelWorld { - private final TileEntity te; - private final BlockInfo info; + private final BlockEntity te; + private final StructureBlockInfo info; - public ContraptionTileWorld(World world, TileEntity te, BlockInfo info) { + public ContraptionTileWorld(Level world, BlockEntity te, StructureBlockInfo info) { super(world); this.te = te; this.info = info; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java index 85b5239047..9ae70d96c9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.contraptions.components.structureMovement; -import static net.minecraft.entity.Entity.collideBoundingBoxHeuristically; +import static net.minecraft.world.entity.Entity.collideBoundingBoxHeuristically; import java.util.ArrayList; import java.util.List; @@ -35,6 +35,7 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; import net.minecraft.util.RewindableStream; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; @@ -240,7 +241,7 @@ public class ContraptionCollider { BlockState blockState = contraption.getBlocks() .get(pos).state; bounce = BlockHelper.getBounceMultiplier(blockState.getBlock()); - slide = Math.max(0, blockState.getSlipperiness(contraption.world, pos, entity) - .6f); + slide = Math.max(0, blockState.getFriction(contraption.world, pos, entity) - .6f); } } @@ -298,7 +299,7 @@ public class ContraptionCollider { if (!hardCollision && surfaceCollision.isFalse()) continue; - Vec3 allowedMovement = getAllowedMovement(totalResponse, entity); + Vec3 allowedMovement = collide(totalResponse, entity); entity.setPos(entityPosition.x + allowedMovement.x, entityPosition.y + allowedMovement.y, entityPosition.z + allowedMovement.z); entityPosition = entity.position(); @@ -317,7 +318,7 @@ public class ContraptionCollider { entityMotion = entityMotion.multiply(.5f, 1, .5f); } contactPointMotion = contraptionEntity.getContactPointMotion(entityPosition); - allowedMovement = getAllowedMovement(contactPointMotion, entity); + allowedMovement = collide(contactPointMotion, entity); entity.setPos(entityPosition.x + allowedMovement.x, entityPosition.y, entityPosition.z + allowedMovement.z); } @@ -329,7 +330,7 @@ public class ContraptionCollider { double d0 = entity.getX() - entity.xo - contactPointMotion.x; double d1 = entity.getZ() - entity.zo - contactPointMotion.z; - float limbSwing = Mth.sqrt(d0 * d0 + d1 * d1) * 4.0F; + float limbSwing = Mth.sqrt((float) (d0 * d0 + d1 * d1)) * 4.0F; if (limbSwing > 1.0F) limbSwing = 1.0F; AllPackets.channel.sendToServer(new ClientMotionPacket(entityMotion, true, limbSwing)); @@ -394,45 +395,45 @@ public class ContraptionCollider { return position; } - /** From Entity#getAllowedMovement **/ - static Vec3 getAllowedMovement(Vec3 movement, Entity e) { - AABB bb = e.getBoundingBox(); - CollisionContext ctx = CollisionContext.of(e); - Level world = e.level; - VoxelShape voxelshape = world.getWorldBorder() + /** From Entity#collide **/ + static Vec3 collide(Vec3 p_20273_, Entity e) { + AABB aabb = e.getBoundingBox(); + CollisionContext collisioncontext = CollisionContext.of(e); + VoxelShape voxelshape = e.level.getWorldBorder() .getCollisionShape(); Stream stream = - Shapes.joinIsNotEmpty(voxelshape, Shapes.create(bb.deflate(1.0E-7D)), BooleanOp.AND) - ? Stream.empty() + Shapes.joinIsNotEmpty(voxelshape, Shapes.create(aabb.deflate(1.0E-7D)), BooleanOp.AND) ? Stream.empty() : Stream.of(voxelshape); - Stream stream1 = world.getEntityCollisions(e, bb.expandTowards(movement), entity -> false); // FIXME: 1.15 equivalent translated correctly? - RewindableStream reuseablestream = new RewindableStream<>(Stream.concat(stream1, stream)); - Vec3 allowedMovement = movement.lengthSqr() == 0.0D ? movement - : collideBoundingBoxHeuristically(e, movement, bb, world, ctx, reuseablestream); - boolean xDifferent = movement.x != allowedMovement.x; - boolean yDifferent = movement.y != allowedMovement.y; - boolean zDifferent = movement.z != allowedMovement.z; - boolean notMovingUp = e.isOnGround() || yDifferent && movement.y < 0.0D; - if (e.maxUpStep > 0.0F && notMovingUp && (xDifferent || zDifferent)) { - Vec3 allowedStep = collideBoundingBoxHeuristically(e, new Vec3(movement.x, (double) e.maxUpStep, movement.z), - bb, world, ctx, reuseablestream); - Vec3 allowedStepGivenMovement = collideBoundingBoxHeuristically(e, new Vec3(0.0D, (double) e.maxUpStep, 0.0D), - bb.expandTowards(movement.x, 0.0D, movement.z), world, ctx, reuseablestream); - if (allowedStepGivenMovement.y < (double) e.maxUpStep) { - Vec3 vec3 = collideBoundingBoxHeuristically(e, new Vec3(movement.x, 0.0D, movement.z), - bb.move(allowedStepGivenMovement), world, ctx, reuseablestream).add(allowedStepGivenMovement); - if (getHorizontalDistanceSqr(vec3) > getHorizontalDistanceSqr(allowedStep)) { - allowedStep = vec3; + Stream stream1 = e.level.getEntityCollisions(e, aabb.expandTowards(p_20273_), (p_19949_) -> { + return true; + }); + RewindableStream rewindablestream = new RewindableStream<>(Stream.concat(stream1, stream)); + Vec3 vec3 = p_20273_.lengthSqr() == 0.0D ? p_20273_ + : collideBoundingBoxHeuristically(e, p_20273_, aabb, e.level, collisioncontext, rewindablestream); + boolean flag = p_20273_.x != vec3.x; + boolean flag1 = p_20273_.y != vec3.y; + boolean flag2 = p_20273_.z != vec3.z; + boolean flag3 = e.onGround || flag1 && p_20273_.y < 0.0D; + if (e.maxUpStep > 0.0F && flag3 && (flag || flag2)) { + Vec3 vec31 = collideBoundingBoxHeuristically(e, new Vec3(p_20273_.x, e.maxUpStep, p_20273_.z), aabb, + e.level, collisioncontext, rewindablestream); + Vec3 vec32 = collideBoundingBoxHeuristically(e, new Vec3(0.0D, e.maxUpStep, 0.0D), + aabb.expandTowards(p_20273_.x, 0.0D, p_20273_.z), e.level, collisioncontext, rewindablestream); + if (vec32.y < e.maxUpStep) { + Vec3 vec33 = collideBoundingBoxHeuristically(e, new Vec3(p_20273_.x, 0.0D, p_20273_.z), + aabb.move(vec32), e.level, collisioncontext, rewindablestream).add(vec32); + if (vec33.horizontalDistanceSqr() > vec31.horizontalDistanceSqr()) { + vec31 = vec33; } } - if (getHorizontalDistanceSqr(allowedStep) > getHorizontalDistanceSqr(allowedMovement)) { - return allowedStep.add(collideBoundingBoxHeuristically(e, new Vec3(0.0D, -allowedStep.y + movement.y, 0.0D), - bb.move(allowedStep), world, ctx, reuseablestream)); + if (vec31.horizontalDistanceSqr() > vec3.horizontalDistanceSqr()) { + return vec31.add(collideBoundingBoxHeuristically(e, new Vec3(0.0D, -vec31.y + p_20273_.y, 0.0D), + aabb.move(vec31), e.level, collisioncontext, rewindablestream)); } } - return allowedMovement; + return vec3; } private static PlayerType getPlayerType(Entity entity) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionLighter.java index 03a5fc3f40..97cb480c3a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionLighter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionLighter.java @@ -8,7 +8,7 @@ import com.jozufozu.flywheel.light.LightProvider; import com.jozufozu.flywheel.light.LightUpdater; import com.jozufozu.flywheel.light.ListenerStatus; -import net.minecraft.world.LightType; +import net.minecraft.world.level.LightLayer; public abstract class ContraptionLighter implements ILightUpdateListener { protected final C contraption; @@ -42,7 +42,7 @@ public abstract class ContraptionLighter implements ILigh } @Override - public void onLightUpdate(LightProvider world, LightType type, ImmutableBox changed) { + public void onLightUpdate(LightProvider world, LightLayer type, ImmutableBox changed) { lightVolume.onLightUpdate(world, type, changed); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java index f037508256..be28e486b1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java @@ -1,7 +1,5 @@ package com.simibubi.create.content.contraptions.components.structureMovement; -import static net.minecraft.util.text.TextFormatting.GRAY; - import java.util.Arrays; import java.util.List; @@ -23,12 +21,15 @@ public interface IDisplayAssemblyExceptions { if (!tooltip.isEmpty()) tooltip.add(TextComponent.EMPTY); - tooltip.add(IHaveGoggleInformation.componentSpacing.plainCopy().append(Lang.translate("gui.assembly.exception").withStyle(ChatFormatting.GOLD))); + tooltip.add(IHaveGoggleInformation.componentSpacing.plainCopy() + .append(Lang.translate("gui.assembly.exception") + .withStyle(ChatFormatting.GOLD))); String text = e.component.getString(); Arrays.stream(text.split("\n")) - .forEach(l -> TooltipHelper.cutStringTextComponent(l, GRAY, WHITE) - .forEach(c -> tooltip.add(IHaveGoggleInformation.componentSpacing.plainCopy().append(c)))); + .forEach(l -> TooltipHelper.cutStringTextComponent(l, ChatFormatting.GRAY, ChatFormatting.WHITE) + .forEach(c -> tooltip.add(IHaveGoggleInformation.componentSpacing.plainCopy() + .append(c)))); return true; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/StructureTransform.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/StructureTransform.java index 0c5c0489e0..0dfb6df4c5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/StructureTransform.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/StructureTransform.java @@ -1,7 +1,8 @@ package com.simibubi.create.content.contraptions.components.structureMovement; -import static net.minecraft.block.HorizontalFaceBlock.FACE; -import static net.minecraft.state.properties.BlockStateProperties.FACING; +import static net.minecraft.world.level.block.state.properties.BlockStateProperties.AXIS; +import static net.minecraft.world.level.block.state.properties.BlockStateProperties.FACING; +import static net.minecraft.world.level.block.state.properties.BlockStateProperties.HORIZONTAL_FACING; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock; @@ -30,6 +31,8 @@ import net.minecraft.world.level.block.state.properties.AttachFace; import net.minecraft.world.level.block.state.properties.BellAttachType; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.block.state.properties.Half; import net.minecraft.world.level.block.state.properties.SlabType; import net.minecraft.world.phys.Vec3; @@ -124,11 +127,10 @@ public class StructureTransform { if (rotationAxis == Axis.Y) { if (block instanceof BellBlock) { - if (state.getValue(BlockStateProperties.BELL_ATTACHMENT) == BellAttachType.DOUBLE_WALL) { + if (state.getValue(BlockStateProperties.BELL_ATTACHMENT) == BellAttachType.DOUBLE_WALL) state = state.setValue(BlockStateProperties.BELL_ATTACHMENT, BellAttachType.SINGLE_WALL); - } - return state.setValue(FaceAttachedHorizontalDirectionalBlock.FACING, - rotation.rotate(state.getValue(FaceAttachedHorizontalDirectionalBlock.FACING))); + return state.setValue(BellBlock.FACING, + rotation.rotate(state.getValue(BellBlock.FACING))); } return state.rotate(rotation); } @@ -137,30 +139,32 @@ public class StructureTransform { return rotateChassis(state); if (block instanceof FaceAttachedHorizontalDirectionalBlock) { - Direction stateFacing = state.getValue(FaceAttachedHorizontalDirectionalBlock.FACING); - AttachFace stateFace = state.getValue(FACE); + DirectionProperty facingProperty = FaceAttachedHorizontalDirectionalBlock.FACING; + EnumProperty faceProperty = FaceAttachedHorizontalDirectionalBlock.FACE; + Direction stateFacing = state.getValue(facingProperty); + AttachFace stateFace = state.getValue(faceProperty); Direction forcedAxis = rotationAxis == Axis.Z ? Direction.EAST : Direction.SOUTH; if (stateFacing.getAxis() == rotationAxis && stateFace == AttachFace.WALL) return state; for (int i = 0; i < rotation.ordinal(); i++) { - stateFace = state.getValue(FACE); - stateFacing = state.getValue(FaceAttachedHorizontalDirectionalBlock.FACING); + stateFace = state.getValue(faceProperty); + stateFacing = state.getValue(facingProperty); - boolean b = state.getValue(FACE) == AttachFace.CEILING; - state = state.setValue(HORIZONTAL_FACING, b ? forcedAxis : forcedAxis.getOpposite()); + boolean b = state.getValue(faceProperty) == AttachFace.CEILING; + state = state.setValue(facingProperty, b ? forcedAxis : forcedAxis.getOpposite()); if (stateFace != AttachFace.WALL) { - state = state.setValue(FACE, AttachFace.WALL); + state = state.setValue(faceProperty, AttachFace.WALL); continue; } if (stateFacing.getAxisDirection() == AxisDirection.POSITIVE) { - state = state.setValue(FACE, AttachFace.FLOOR); + state = state.setValue(faceProperty, AttachFace.FLOOR); continue; } - state = state.setValue(FACE, AttachFace.CEILING); + state = state.setValue(faceProperty, AttachFace.CEILING); } return state; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java index d441a6deba..46af5c6a85 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java @@ -45,8 +45,8 @@ public class ClockworkBearingTileEntity extends KineticTileEntity private float prevForcedAngle; - public ClockworkBearingTileEntity(BlockEntityType type) { - super(type); + public ClockworkBearingTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); setLazyTickRate(3); } @@ -310,7 +310,7 @@ public class ClockworkBearingTileEntity extends KineticTileEntity } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { float hourAngleBefore = hourAngle; float minuteAngleBefore = minuteAngle; @@ -318,7 +318,7 @@ public class ClockworkBearingTileEntity extends KineticTileEntity hourAngle = compound.getFloat("HourAngle"); minuteAngle = compound.getFloat("MinuteAngle"); lastException = AssemblyException.read(compound); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); if (!clientPacket) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java index 57e3985f7c..c3e393994b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java @@ -1,7 +1,5 @@ package com.simibubi.create.content.contraptions.components.structureMovement.bearing; -import static net.minecraft.state.properties.BlockStateProperties.FACING; - import java.util.List; import com.simibubi.create.AllSoundEvents; @@ -40,8 +38,8 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity private float prevAngle; - public MechanicalBearingTileEntity(BlockEntityType type) { - super(type); + public MechanicalBearingTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); setLazyTickRate(3); } @@ -75,9 +73,9 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { if (wasMoved) { - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); return; } @@ -85,7 +83,7 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity running = compound.getBoolean("Running"); angle = compound.getFloat("Angle"); lastException = AssemblyException.read(compound); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); if (!clientPacket) return; if (running) { @@ -145,7 +143,7 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity .getBlock() instanceof BearingBlock)) return; - Direction direction = getBlockState().getValue(FACING); + Direction direction = getBlockState().getValue(BearingBlock.FACING); BearingContraption contraption = new BearingContraption(isWindmill(), direction); try { if (!contraption.assemble(level, worldPosition)) @@ -263,12 +261,12 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity BlockState blockState = getBlockState(); if (!(contraption.getContraption() instanceof BearingContraption)) return; - if (!blockState.hasProperty(FACING)) + if (!blockState.hasProperty(BearingBlock.FACING)) return; this.movedContraption = contraption; setChanged(); - BlockPos anchor = worldPosition.relative(blockState.getValue(FACING)); + BlockPos anchor = worldPosition.relative(blockState.getValue(BearingBlock.FACING)); movedContraption.setPos(anchor.getX(), anchor.getY(), anchor.getZ()); if (!level.isClientSide) { this.running = true; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/SailBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/SailBlock.java index f037e764af..f8981b406e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/SailBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/SailBlock.java @@ -17,6 +17,7 @@ import com.simibubi.create.foundation.utility.placement.IPlacementHelper; import com.simibubi.create.foundation.utility.placement.PlacementHelpers; import com.simibubi.create.foundation.utility.placement.PlacementOffset; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.InteractionHand; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/WindmillBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/WindmillBearingTileEntity.java index 273f5d740e..e9302311c1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/WindmillBearingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/WindmillBearingTileEntity.java @@ -9,6 +9,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.INamedIco import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollOptionBehaviour; import com.simibubi.create.foundation.utility.Lang; +import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.Mth; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -19,8 +20,8 @@ public class WindmillBearingTileEntity extends MechanicalBearingTileEntity { protected ScrollOptionBehaviour movementDirection; protected float lastGeneratedSpeed; - public WindmillBearingTileEntity(BlockEntityType type) { - super(type); + public WindmillBearingTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override @@ -64,10 +65,10 @@ public class WindmillBearingTileEntity extends MechanicalBearingTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { if (!wasMoved) lastGeneratedSpeed = compound.getFloat("LastGenerated"); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/ChassisTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/ChassisTileEntity.java index 1aa8947260..f5024cb70f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/ChassisTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/ChassisTileEntity.java @@ -1,17 +1,5 @@ package com.simibubi.create.content.contraptions.components.structureMovement.chassis; -import static net.minecraft.state.properties.BlockStateProperties.AXIS; - -import javanet.minimport com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.components.structureMovement.BlockMovementChecks; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.BulkScrollValueBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueBehaviour; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Lang; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; @@ -19,21 +7,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Queue; import java.util.Set; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.core.Direction.Axis; -import net.minecraft.core.Direction.AxisDirection; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.fml.DistExecutor; - -ecraft.world.level.block.state.properties.BlockStatePropertiesport java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Queue; -import java.util.Set; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.components.structureMovement.BlockMovementChecks; @@ -46,14 +19,14 @@ import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollVal import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; -import net.minecraft.block.BlockState; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.BlockPos; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Direction.Axis; +import net.minecraft.core.Direction.AxisDirection; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.fml.DistExecutor; @@ -61,8 +34,8 @@ public class ChassisTileEntity extends SmartTileEntity { ScrollValueBehaviour range; - public ChassisTileEntity(BlockEntityType type) { - super(type); + public ChassisTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override @@ -161,7 +134,7 @@ public class ChassisTileEntity extends SmartTileEntity { continue; if (!LinearChassisBlock.sameKind(state, neighbourState)) continue; - if (neighbourState.getValue(AXIS) != axis) + if (neighbourState.getValue(LinearChassisBlock.AXIS) != axis) continue; frontier.add(current); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerTileEntity.java index adf03684e0..c9a6c22edd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerTileEntity.java @@ -14,6 +14,7 @@ import com.simibubi.create.foundation.utility.animation.LerpedFloat; import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -27,8 +28,8 @@ public class StickerTileEntity extends SmartTileEntity implements IInstanceRende LerpedFloat piston; boolean update; - public StickerTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public StickerTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); piston = LerpedFloat.linear(); update = false; } @@ -82,8 +83,8 @@ public class StickerTileEntity extends SmartTileEntity implements IInstanceRende } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); + protected void fromTag(CompoundTag compound, boolean clientPacket) { + super.fromTag(compound, clientPacket); if (clientPacket) update = true; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageTileEntity.java index 902c06b406..b177798892 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageTileEntity.java @@ -1,8 +1,6 @@ package com.simibubi.create.content.contraptions.components.structureMovement.gantry; -import static net.minecraft.state.properties.BlockStateProperties.FACING; - -import com.net.minimport com.simibubi.create.AllBlocks; +import com.simibubi.create.AllBlocks; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; @@ -10,6 +8,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Con import com.simibubi.create.content.contraptions.components.structureMovement.IDisplayAssemblyExceptions; import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftBlock; import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftTileEntity; + import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -18,29 +17,13 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -ecraft.world.level.block.state.properties.BlockStatePropertiesate.AllSoundEvents; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionCollider; -import com.simibubi.create.content.contraptions.components.structureMovement.IDisplayAssemblyExceptions; -import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftBlock; -import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftTileEntity; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; - public class GantryCarriageTileEntity extends KineticTileEntity implements IDisplayAssemblyExceptions { boolean assembleNextTick; protected AssemblyException lastException; - public GantryCarriageTileEntity(BlockEntityType typeIn) { - super(typeIn); + public GantryCarriageTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { + super(typeIn, pos, state); } @Override @@ -87,7 +70,7 @@ public class GantryCarriageTileEntity extends KineticTileEntity implements IDisp if (!(blockState.getBlock() instanceof GantryCarriageBlock)) return; - Direction direction = blockState.getValue(FACING); + Direction direction = blockState.getValue(GantryCarriageBlock.FACING); GantryContraption contraption = new GantryContraption(direction); BlockEntity shaftTe = level.getBlockEntity(worldPosition.relative(direction.getOpposite())); @@ -134,9 +117,9 @@ public class GantryCarriageTileEntity extends KineticTileEntity implements IDisp } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { lastException = AssemblyException.read(compound); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java index 5672c5b426..df3b433440 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java @@ -14,7 +14,6 @@ import com.jozufozu.flywheel.core.instancing.ConditionalInstance; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; import com.jozufozu.flywheel.core.model.IModel; import com.mojang.math.Quaternion; -import com.mojang.math.Vector3d; import com.simibubi.create.AllItems; import com.simibubi.create.AllStitchedTextures; import com.simibubi.create.Create; @@ -24,9 +23,11 @@ import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; -import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.LightType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.LightLayer; +import net.minecraft.world.phys.Vec3; public class GlueInstance extends EntityInstance implements ITickableInstance { @@ -82,12 +83,12 @@ public class GlueInstance extends EntityInstance implements ITi private void updateLight(OrientedData model) { BlockPos pos = entity.getHangingPosition(); - model.setBlockLight(world.getBrightness(LightType.BLOCK, pos)) - .setSkyLight(world.getBrightness(LightType.SKY, pos)); + model.setBlockLight(world.getBrightness(LightLayer.BLOCK, pos)) + .setSkyLight(world.getBrightness(LightLayer.SKY, pos)); } private boolean shouldShow() { - PlayerEntity player = Minecraft.getInstance().player; + Player player = Minecraft.getInstance().player; return entity.isVisible() || AllItems.SUPER_GLUE.isIn(player.getMainHandItem()) @@ -97,29 +98,29 @@ public class GlueInstance extends EntityInstance implements ITi public static class GlueModel implements IModel { @Override public void buffer(VecBuffer buffer) { - Vector3d diff = Vector3d.atLowerCornerOf(Direction.SOUTH.getNormal()); - Vector3d extension = diff.normalize() + Vec3 diff = Vec3.atLowerCornerOf(Direction.SOUTH.getNormal()); + Vec3 extension = diff.normalize() .scale(1 / 32f - 1 / 128f); - Vector3d plane = VecHelper.axisAlingedPlaneOf(diff); + Vec3 plane = VecHelper.axisAlingedPlaneOf(diff); Direction.Axis axis = Direction.getNearest(diff.x, diff.y, diff.z) .getAxis(); - Vector3d start = Vector3d.ZERO.subtract(extension); - Vector3d end = Vector3d.ZERO.add(extension); + Vec3 start = Vec3.ZERO.subtract(extension); + Vec3 end = Vec3.ZERO.add(extension); plane = plane.scale(1 / 2f); - Vector3d a1 = plane.add(start); - Vector3d b1 = plane.add(end); + Vec3 a1 = plane.add(start); + Vec3 b1 = plane.add(end); plane = VecHelper.rotate(plane, -90, axis); - Vector3d a2 = plane.add(start); - Vector3d b2 = plane.add(end); + Vec3 a2 = plane.add(start); + Vec3 b2 = plane.add(end); plane = VecHelper.rotate(plane, -90, axis); - Vector3d a3 = plane.add(start); - Vector3d b3 = plane.add(end); + Vec3 a3 = plane.add(start); + Vec3 b3 = plane.add(end); plane = VecHelper.rotate(plane, -90, axis); - Vector3d a4 = plane.add(start); - Vector3d b4 = plane.add(end); + Vec3 a4 = plane.add(start); + Vec3 b4 = plane.add(end); float minU; float maxU; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueEntity.java index c062de35de..586d43eb0c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueEntity.java @@ -67,7 +67,8 @@ import net.minecraftforge.fmllegacy.common.registry.IEntityAdditionalSpawnData; import net.minecraftforge.fmllegacy.network.NetworkHooks; import net.minecraftforge.fmllegacy.network.PacketDistributor; -public class SuperGlueEntity extends Entity implements IEntityAdditionalSpawnData, ISpecialEntityItemRequirement, IInstanceRendered { +public class SuperGlueEntity extends Entity + implements IEntityAdditionalSpawnData, ISpecialEntityItemRequirement, IInstanceRendered { private int validationTimer; protected BlockPos hangingPosition; @@ -112,16 +113,16 @@ public class SuperGlueEntity extends Entity implements IEntityAdditionalSpawnDat Validate.notNull(getFacingDirection()); if (getFacingDirection().getAxis() .isHorizontal()) { - this.xRot = 0.0F; - this.yRot = getFacingDirection().get2DDataValue() * 90; + setXRot(0); + setYRot(getFacingDirection().get2DDataValue() * 90); } else { - this.xRot = -90 * getFacingDirection().getAxisDirection() - .getStep(); - this.yRot = 0.0F; + setXRot(-90 * getFacingDirection().getAxisDirection() + .getStep()); + setYRot(0); } - this.xRotO = this.xRot; - this.yRotO = this.yRot; + this.xRotO = this.getXRot(); + this.yRotO = this.getYRot(); this.updateBoundingBox(); } @@ -162,7 +163,7 @@ public class SuperGlueEntity extends Entity implements IEntityAdditionalSpawnDat if (this.validationTimer++ == 10 && !this.level.isClientSide) { this.validationTimer = 0; if (isAlive() && !this.onValidSurface()) { - remove(); + kill(); onBroken(null); } } @@ -189,13 +190,13 @@ public class SuperGlueEntity extends Entity implements IEntityAdditionalSpawnDat if (!level.isAreaLoaded(pos, 0) || !level.isAreaLoaded(pos2, 0)) return true; if (!isValidFace(level, pos2, getFacingDirection()) - && !isValidFace(level, pos, getFacingDirection().getOpposite())) + && !isValidFace(level, pos, getFacingDirection().getOpposite())) return false; if (isSideSticky(level, pos2, getFacingDirection()) - || isSideSticky(level, pos, getFacingDirection().getOpposite())) + || isSideSticky(level, pos, getFacingDirection().getOpposite())) return false; return level.getEntities(this, getBoundingBox(), e -> e instanceof SuperGlueEntity) - .isEmpty(); + .isEmpty(); } public static boolean isValidFace(Level world, BlockPos pos, Direction direction) { @@ -249,9 +250,7 @@ public class SuperGlueEntity extends Entity implements IEntityAdditionalSpawnDat @Override public boolean skipAttackInteraction(Entity entity) { - return entity instanceof Player - ? hurt(DamageSource.playerAttack((Player) entity), 0) - : false; + return entity instanceof Player ? hurt(DamageSource.playerAttack((Player) entity), 0) : false; } @Override @@ -264,7 +263,8 @@ public class SuperGlueEntity extends Entity implements IEntityAdditionalSpawnDat if (this.isInvulnerableTo(source)) return false; - boolean mobGriefing = level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); + boolean mobGriefing = level.getGameRules() + .getBoolean(GameRules.RULE_MOBGRIEFING); Entity trueSource = source.getEntity(); if (!mobGriefing && trueSource instanceof Mob) return false; @@ -276,7 +276,7 @@ public class SuperGlueEntity extends Entity implements IEntityAdditionalSpawnDat } if (isAlive() && !level.isClientSide) { - remove(); + kill(); markHurt(); onBroken(source.getEntity()); } @@ -287,7 +287,7 @@ public class SuperGlueEntity extends Entity implements IEntityAdditionalSpawnDat @Override public void move(MoverType typeIn, Vec3 pos) { if (!level.isClientSide && isAlive() && pos.lengthSqr() > 0.0D) { - remove(); + discard(); onBroken(null); } } @@ -295,7 +295,7 @@ public class SuperGlueEntity extends Entity implements IEntityAdditionalSpawnDat @Override public void push(double x, double y, double z) { if (!level.isClientSide && isAlive() && x * x + y * y + z * z > 0.0D) { - remove(); + discard(); onBroken(null); } } @@ -334,8 +334,7 @@ public class SuperGlueEntity extends Entity implements IEntityAdditionalSpawnDat LocalPlayer cPlayer = (LocalPlayer) player; Minecraft mc = Minecraft.getInstance(); - HitResult ray = - cPlayer.pick(mc.gameMode.getPickRange(), AnimationTickHolder.getPartialTicks(), false); + HitResult ray = cPlayer.pick(mc.gameMode.getPickRange(), AnimationTickHolder.getPartialTicks(), false); if (!(ray instanceof BlockHitResult)) return; @@ -423,7 +422,7 @@ public class SuperGlueEntity extends Entity implements IEntityAdditionalSpawnDat } } - float f = Mth.wrapDegrees(this.yRot); + float f = Mth.wrapDegrees(this.getYRot()); switch (transformRotation) { case CLOCKWISE_180: return f + 180.0F; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/package-info.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/package-info.java index 66cce41da3..18cc22daf7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/package-info.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/package-info.java @@ -2,3 +2,5 @@ package com.simibubi.create.content.contraptions.components.structureMovement.glue; import javax.annotation.ParametersAreNonnullByDefault; + +import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java index e39a6c2038..2ac25acf46 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java @@ -185,7 +185,7 @@ public class CartAssemblerBlock extends BaseRailBlock if (!player.isCreative()) { itemStack.shrink(1); - player.inventory.placeItemBackInInventory(world, new ItemStack(previousItem)); + player.getInventory().placeItemBackInInventory(new ItemStack(previousItem)); } return InteractionResult.SUCCESS; } @@ -286,7 +286,7 @@ public class CartAssemblerBlock extends BaseRailBlock return InteractionResult.SUCCESS; if (player != null && !player.isCreative()) getDropsNoRail(state, (ServerLevel) world, pos, world.getBlockEntity(pos), player, context.getItemInHand()) - .forEach(itemStack -> player.inventory.placeItemBackInInventory(world, itemStack)); + .forEach(itemStack -> player.getInventory().placeItemBackInInventory(itemStack)); if (world instanceof ServerLevel) state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY); world.setBlockAndUpdate(pos, getRailBlock(state)); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerTileEntity.java index e72655b8ea..33b62c6e5e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerTileEntity.java @@ -49,8 +49,8 @@ public class CartAssemblerTileEntity extends SmartTileEntity implements IDisplay protected AssemblyException lastException; protected AbstractMinecart cartToAssemble; - public CartAssemblerTileEntity(BlockEntityType type) { - super(type); + public CartAssemblerTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); ticksSinceMinecartUpdate = assemblyCooldown; } @@ -242,9 +242,9 @@ public class CartAssemblerTileEntity extends SmartTileEntity implements IDisplay } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { lastException = AssemblyException.read(compound); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/ItemHandlerModifiableFromIInventory.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/ItemHandlerModifiableFromIInventory.java index 8ee3e9da99..f70ee51f99 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/ItemHandlerModifiableFromIInventory.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/ItemHandlerModifiableFromIInventory.java @@ -3,6 +3,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.mo import javax.annotation.Nonnull; import javax.annotation.ParametersAreNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.world.Container; import net.minecraft.world.item.ItemStack; import net.minecraftforge.items.IItemHandlerModifiable; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java index 6118c629a1..8b119f361f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java @@ -245,7 +245,7 @@ public class MinecartContraptionItem extends Item { return; } - player.inventory.placeItemBackInInventory(event.getWorld(), generatedStack); + player.getInventory().placeItemBackInInventory(event.getWorld(), generatedStack); contraption.remove(); entity.remove(); event.setCancellationResult(InteractionResult.SUCCESS); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java index eee85a2237..af4f57ad8d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java @@ -36,8 +36,8 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity // Custom position sync protected float clientOffsetDiff; - public LinearActuatorTileEntity(BlockEntityType typeIn) { - super(typeIn); + public LinearActuatorTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { + super(typeIn, pos, state); setLazyTickRate(3); forceMove = true; } @@ -179,7 +179,7 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { boolean forceMovement = compound.contains("ForceMovement"); float offsetBefore = offset; @@ -187,7 +187,7 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity waitingForSpeedChange = compound.getBoolean("Waiting"); offset = compound.getFloat("Offset"); lastException = AssemblyException.read(compound); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); if (!clientPacket) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java index 0b24741b37..1a731f3a6b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java @@ -27,14 +27,14 @@ public class MechanicalPistonTileEntity extends LinearActuatorTileEntity { protected boolean hadCollisionWithOtherPiston; protected int extensionLength; - public MechanicalPistonTileEntity(BlockEntityType type) { - super(type); + public MechanicalPistonTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { extensionLength = compound.getInt("ExtensionLength"); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonContraption.java index 2f015d62db..00537bd01b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonContraption.java @@ -6,35 +6,11 @@ import static com.simibubi.create.content.contraptions.components.structureMovem import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isPiston; import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isPistonHead; import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isStickyPiston; -import static net.minecraft.state.properties.BlockStateProperties.FACING; +import static net.minecraft.world.level.block.state.properties.BlockStateProperties.FACING; -import javanet.minimport com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; -import com.simibubi.create.content.contraptions.components.structureMovement.BlockMovementChecks; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionType; -import com.simibubi.create.content.contraptions.components.structureMovement.TranslatingContraption; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.utility.VecHelper; import java.util.ArrayList; import java.util.List; import java.util.Queue; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.block.WoolCarpetBlock; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.properties.PistonType; -import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; -import net.minecraft.world.level.material.PushReaction; -import net.minecraft.world.phys.AABB; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import org.apache.commons.lang3.tuple.Pair; - -ecraft.world.level.block.state.properties.BlockStatePropertiesva.util.Queue; import org.apache.commons.lang3.tuple.Pair; @@ -47,19 +23,19 @@ import com.simibubi.create.content.contraptions.components.structureMovement.pis import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.utility.VecHelper; -import net.minecraft.block.BlockState; -import net.minecraft.block.CarpetBlock; -import net.minecraft.block.material.PushReaction; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.state.properties.PistonType; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IWorld; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.template.Template.BlockInfo; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.WoolCarpetBlock; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.PistonType; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; +import net.minecraft.world.level.material.PushReaction; +import net.minecraft.world.phys.AABB; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -166,7 +142,7 @@ public class PistonContraption extends TranslatingContraption { BlockPos relPos = pole.pos.relative(direction, -extensionsInFront); BlockPos localPos = relPos.subtract(anchor); getBlocks().put(localPos, new StructureBlockInfo(localPos, pole.state, null)); - //pistonExtensionCollisionBox = pistonExtensionCollisionBox.union(new AxisAlignedBB(localPos)); + //pistonExtensionCollisionBox = pistonExtensionCollisionBox.union(new AABB(localPos)); } return true; @@ -188,7 +164,7 @@ public class PistonContraption extends TranslatingContraption { if (offset == 1 && retracting) return true; BlockPos currentPos = pos.relative(orientation, offset + initialExtensionProgress); - if (retracting && Level.isOutsideBuildHeight(currentPos)) + if (retracting && world.isOutsideBuildHeight(currentPos)) return true; if (!world.isLoaded(currentPos)) throw AssemblyException.unloadedChunk(currentPos); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonExtensionPoleBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonExtensionPoleBlock.java index d3d1157db2..fbd8793bea 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonExtensionPoleBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonExtensionPoleBlock.java @@ -15,6 +15,7 @@ import com.simibubi.create.foundation.utility.placement.IPlacementHelper; import com.simibubi.create.foundation.utility.placement.PlacementHelpers; import com.simibubi.create.foundation.utility.placement.util.PoleHelper; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java index 85e961ff83..89846701ca 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java @@ -18,8 +18,9 @@ import com.mojang.math.Vector3f; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.LightType; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; +import net.minecraft.world.level.LightLayer; public abstract class AbstractPulleyInstance extends ShaftInstance implements IDynamicInstance, IMovingListener { @@ -71,7 +72,7 @@ public abstract class AbstractPulleyInstance extends ShaftInstance implements ID magnet.update() .get() .ifPresent(data -> { - int i = Math.max(0, MathHelper.floor(offset)); + int i = Math.max(0, Mth.floor(offset)); short packed = light.getPackedLight(pos.getX(), pos.getY() - i, pos.getZ()); data.setPosition(getInstancePosition()) .nudge(0, -offset, 0) @@ -149,7 +150,7 @@ public abstract class AbstractPulleyInstance extends ShaftInstance implements ID } private boolean updateVolume() { - int length = MathHelper.ceil(offset) + 2; + int length = Mth.ceil(offset) + 2; if (volume.sizeY() < length) { volume.assign(pos.below(length), pos) @@ -164,7 +165,7 @@ public abstract class AbstractPulleyInstance extends ShaftInstance implements ID } private int getNeededRopeCount() { - return Math.max(0, MathHelper.ceil(offset - 1.25f)); + return Math.max(0, Mth.ceil(offset - 1.25f)); } private boolean shouldRenderHalfRope() { @@ -191,7 +192,7 @@ public abstract class AbstractPulleyInstance extends ShaftInstance implements ID } @Override - public void onLightUpdate(LightProvider world, LightType type, ImmutableBox changed) { + public void onLightUpdate(LightProvider world, LightLayer type, ImmutableBox changed) { super.onLightUpdate(world, type, changed); light.onLightUpdate(world, type, changed); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java index 595158d24d..5b88c414cd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java @@ -44,16 +44,18 @@ public abstract class AbstractPulleyRenderer extends KineticTileEntityRenderer { protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.getInstance() + .canUseInstancing(te.getLevel())) + return; super.renderSafe(te, partialTicks, ms, buffer, light, overlay); float offset = getOffset(te, partialTicks); boolean running = isRunning(te); Axis rotationAxis = ((IRotate) te.getBlockState() - .getBlock()).getRotationAxis(te.getBlockState()); + .getBlock()).getRotationAxis(te.getBlockState()); kineticRotationTransform(getRotatedCoil(te), te, rotationAxis, AngleHelper.rad(offset * 180), light) - .renderInto(ms, buffer.getBuffer(RenderType.solid())); + .renderInto(ms, buffer.getBuffer(RenderType.solid())); Level world = te.getLevel(); BlockState blockState = te.getBlockState(); @@ -107,7 +109,13 @@ public abstract class AbstractPulleyRenderer extends KineticTileEntityRenderer { protected SuperByteBuffer getRotatedCoil(KineticTileEntity te) { BlockState blockState = te.getBlockState(); - return PartialBufferer.getFacing(getCoil(), blockState, Direction.get(AxisDirection.POSITIVE, getShaftAxis(te))); + return PartialBufferer.getFacing(getCoil(), blockState, + Direction.get(AxisDirection.POSITIVE, getShaftAxis(te))); + } + + @Override + public int getViewDistance() { + return 256; } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java index 52e24d137e..877c79d761 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java @@ -63,4 +63,10 @@ public class PulleyRenderer extends AbstractPulleyRenderer { return offset; } + + @Override + public int getViewDistance() { + return 128; + } + } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java index e0f84d63ac..eac9c77dc8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java @@ -14,6 +14,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity.RemovalReason; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.SimpleWaterloggedBlock; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -29,8 +30,8 @@ public class PulleyTileEntity extends LinearActuatorTileEntity { protected int initialOffset; private float prevAnimatedOffset; - public PulleyTileEntity(BlockEntityType type) { - super(type); + public PulleyTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override @@ -38,11 +39,6 @@ public class PulleyTileEntity extends LinearActuatorTileEntity { return super.makeRenderBoundingBox().expandTowards(0, -offset, 0); } - @Override - public double getViewDistance() { - return super.getViewDistance() + offset * offset; - } - @Override public void tick() { super.tick(); @@ -157,7 +153,7 @@ public class PulleyTileEntity extends LinearActuatorTileEntity { } if (movedContraption != null) - movedContraption.remove(); + movedContraption.remove(RemovalReason.KILLED); movedContraption = null; initialOffset = 0; running = false; @@ -196,9 +192,9 @@ public class PulleyTileEntity extends LinearActuatorTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { initialOffset = compound.getInt("InitialOffset"); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java index 44ecdcbb37..995813354f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java @@ -9,13 +9,13 @@ import org.apache.commons.lang3.tuple.Pair; import com.jozufozu.flywheel.backend.instancing.tile.TileInstanceManager; import com.jozufozu.flywheel.backend.material.MaterialManagerImpl; -import com.jozufozu.flywheel.backend.pipeline.Template; import com.simibubi.create.AllMovementBehaviours; import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import net.minecraft.client.renderer.ActiveRenderInfo; +import net.minecraft.client.Camera; import net.minecraft.core.BlockPos; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; public class ContraptionInstanceManager extends TileInstanceManager { @@ -33,7 +33,7 @@ public class ContraptionInstanceManager extends TileInstanceManager { } @Override - public void beginFrame(ActiveRenderInfo info) { + public void beginFrame(Camera info) { super.beginFrame(info); actors.forEach(ActorInstance::beginFrame); @@ -45,8 +45,8 @@ public class ContraptionInstanceManager extends TileInstanceManager { } @Nullable - public ActorInstance createActor(Pair actor) { - Template.BlockInfo blockInfo = actor.getLeft(); + public ActorInstance createActor(Pair actor) { + StructureBlockInfo blockInfo = actor.getLeft(); MovementContext context = actor.getRight(); MovementBehaviour movementBehaviour = AllMovementBehaviours.of(blockInfo.state); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/RenderedContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/RenderedContraption.java index 729c17f583..be1497c848 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/RenderedContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/RenderedContraption.java @@ -14,7 +14,7 @@ import com.jozufozu.flywheel.backend.model.ModelRenderer; import com.jozufozu.flywheel.core.model.IModel; import com.jozufozu.flywheel.core.model.WorldModel; import com.jozufozu.flywheel.event.BeginFrameEvent; -import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Matrix4f; import com.mojang.math.Vector3d; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; @@ -26,9 +26,9 @@ import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationW import net.minecraft.client.renderer.RenderType; import net.minecraft.core.BlockPos; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.World; +import net.minecraft.util.Mth; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.phys.AABB; public class RenderedContraption extends ContraptionRenderInfo { @@ -89,7 +89,7 @@ public class RenderedContraption extends ContraptionRenderInfo { } @Override - public void setupMatrices(MatrixStack viewProjection, double camX, double camY, double camZ) { + public void setupMatrices(PoseStack viewProjection, double camX, double camY, double camZ) { super.setupMatrices(viewProjection, camX, camY, camZ); if (!modelViewPartialReady) { @@ -139,16 +139,15 @@ public class RenderedContraption extends ContraptionRenderInfo { } private void buildInstancedTiles() { - Collection tileEntities = contraption.maybeInstancedTileEntities; + Collection tileEntities = contraption.maybeInstancedTileEntities; if (!tileEntities.isEmpty()) { - for (TileEntity te : tileEntities) { + for (BlockEntity te : tileEntities) { if (InstancedRenderRegistry.getInstance() .canInstance(te.getType())) { - World world = te.getLevel(); - BlockPos pos = te.getBlockPos(); - te.setLevelAndPosition(renderWorld, pos); + Level world = te.getLevel(); + te.setLevel(renderWorld); kinetics.add(te); - te.setLevelAndPosition(world, pos); + te.setLevel(world); } } } @@ -159,9 +158,9 @@ public class RenderedContraption extends ContraptionRenderInfo { } public static void setupModelViewPartial(Matrix4f matrix, Matrix4f modelMatrix, AbstractContraptionEntity entity, double camX, double camY, double camZ, float pt) { - float x = (float) (MathHelper.lerp(pt, entity.xOld, entity.getX()) - camX); - float y = (float) (MathHelper.lerp(pt, entity.yOld, entity.getY()) - camY); - float z = (float) (MathHelper.lerp(pt, entity.zOld, entity.getZ()) - camZ); + float x = (float) (Mth.lerp(pt, entity.xOld, entity.getX()) - camX); + float y = (float) (Mth.lerp(pt, entity.yOld, entity.getY()) - camY); + float z = (float) (Mth.lerp(pt, entity.zOld, entity.getZ()) - camZ); matrix.setTranslation(x, y, z); matrix.multiply(modelMatrix); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/package-info.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/package-info.java index f2a5d6aaa9..08edd5958e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/package-info.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/package-info.java @@ -2,3 +2,5 @@ package com.simibubi.create.content.contraptions.components.structureMovement.render; import javax.annotation.ParametersAreNonnullByDefault; + +import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingHandlerClient.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingHandlerClient.java index 5e341e55a6..82a862a05f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingHandlerClient.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingHandlerClient.java @@ -52,9 +52,9 @@ public class CouplingHandlerClient { selectedCart = null; } - private static void spawnSelectionParticles(AABB axisAlignedBB, boolean highlight) { + private static void spawnSelectionParticles(AABB AABB, boolean highlight) { ClientLevel world = Minecraft.getInstance().level; - Vec3 center = axisAlignedBB.getCenter(); + Vec3 center = AABB.getCenter(); int amount = highlight ? 100 : 2; ParticleOptions particleData = highlight ? ParticleTypes.END_ROD : new DustParticleOptions(1, 1, 1, 1); for (int i = 0; i < amount; i++) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingRenderer.java index d34da8034c..7e7a9a1491 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingRenderer.java @@ -1,6 +1,8 @@ package com.simibubi.create.content.contraptions.components.structureMovement.train; -import static net.minecraft.util.math.MathHelpimport com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import static net.minecraft.util.Mth.lerp; + +import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Vector3f; @@ -14,6 +16,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.Color; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.VecHelper; + import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.LevelRenderer; @@ -21,41 +24,12 @@ import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; +import net.minecraft.util.Mth; import net.minecraft.world.entity.vehicle.AbstractMinecart; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -er.lerp; - -import com.net.minecraft.util.MthatrixTransformStack; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.CreateClient; -import com.simibubi.create.content.contraptions.KineticDebugger; -import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartController; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.Color; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3f; - public class CouplingRenderer { public static void renderAll(PoseStack ms, MultiBufferSource buffer) { @@ -149,8 +123,8 @@ public class CouplingRenderer { double yIn = lerp(pt, cart.yOld, cart.getY()); double zIn = lerp(pt, cart.zOld, cart.getZ()); - float yaw = lerp(pt, cart.yRotO, cart.yRot); - float pitch = lerp(pt, cart.xRotO, cart.xRot); + float yaw = lerp(pt, cart.yRotO, cart.getYRot()); + float pitch = lerp(pt, cart.xRotO, cart.getXRot()); float roll = cart.getHurtTime() - pt; float rollAmplifier = cart.getDamage() - pt; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/MinecartCouplingItem.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/MinecartCouplingItem.java index 0e025d09a9..1f7542432e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/MinecartCouplingItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/MinecartCouplingItem.java @@ -87,7 +87,7 @@ public class MinecartCouplingItem extends Item { CouplingHandler.status(player, "removed"); controller.decouple(); if (!player.isCreative()) - player.inventory.placeItemBackInInventory(event.getWorld(), + player.getInventory().placeItemBackInInventory(event.getWorld(), new ItemStack(AllItems.MINECART_COUPLING.get(), couplings)); return true; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/MinecartSim2020.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/MinecartSim2020.java index 1fd03b47a2..ebdfd34c57 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/MinecartSim2020.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/MinecartSim2020.java @@ -1,13 +1,13 @@ package com.simibubi.create.content.contraptions.components.structureMovement.train; -import static net.minecraft.entity.Entity.getHorizontalDistanceSqr; +import java.util.Map; -importimport com.google.common.collect.Maps; +import com.google.common.collect.Maps; import com.mojang.datafixers.util.Pair; import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.CapabilityMinecartController; import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartController; import com.simibubi.create.foundation.utility.VecHelper; -import java.util.Map; + import net.minecraft.Util; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -19,25 +19,6 @@ import net.minecraft.world.level.block.BaseRailBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.RailShape; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.util.LazyOptional; - - javanet.minecraft.world.entity.Entityogle.common.collect.Maps; -import com.mojang.datafixers.util.Pair; -import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.CapabilityMinecartController; -import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartController; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.AbstractRailBlock; -import net.minecraft.block.BlockState; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.entity.item.minecart.FurnaceMinecartEntity; -import net.minecraft.state.properties.RailShape; -import net.minecraft.util.Direction; -import net.minecraft.util.Util; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3i; import net.minecraftforge.common.util.LazyOptional; /** @@ -179,7 +160,7 @@ public class MinecartSim2020 { if (Vector3d3 != null && actualVec != null) { double d17 = (actualVec.y - Vector3d3.y) * 0.05D; Vec3 Vector3d4 = cart.getDeltaMovement(); - double d18 = Math.sqrt(getHorizontalDistanceSqr(Vector3d4)); + double d18 = Math.sqrt(Vector3d4.horizontalDistanceSqr()); if (d18 > 0.0D) { cart.setDeltaMovement(Vector3d4.multiply((d18 + d17) / d18, 1.0D, (d18 + d17) / d18)); } @@ -195,7 +176,7 @@ public class MinecartSim2020 { int i = Mth.floor(z); if (j != cartPos.getX() || i != cartPos.getZ()) { Vec3 Vector3d5 = cart.getDeltaMovement(); - double d26 = Math.sqrt(getHorizontalDistanceSqr(Vector3d5)); + double d26 = Math.sqrt(Vector3d5.horizontalDistanceSqr()); cart.setDeltaMovement(d26 * (double) (j - cartPos.getX()), Vector3d5.y, d26 * (double) (i - cartPos.getZ())); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/capability/MinecartController.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/capability/MinecartController.java index 8240edc7a6..3eb9447079 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/capability/MinecartController.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/capability/MinecartController.java @@ -398,16 +398,16 @@ public class MinecartController implements INBTSerializable { StallData(AbstractMinecart entity) { position = entity.position(); motion = entity.getDeltaMovement(); - yaw = entity.yRot; - pitch = entity.xRot; + yaw = entity.getYRot(); + pitch = entity.getXRot(); tick(entity); } void tick(AbstractMinecart entity) { entity.setPos(position.x, position.y, position.z); entity.setDeltaMovement(Vec3.ZERO); - entity.yRot = yaw; - entity.xRot = pitch; + entity.setYRot(yaw); + entity.setXRot(pitch); } void release(AbstractMinecart entity) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/tracks/ControllerRailBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/tracks/ControllerRailBlock.java index aaed70ce4b..a927baa29f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/tracks/ControllerRailBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/tracks/ControllerRailBlock.java @@ -1,14 +1,14 @@ package com.simibubi.create.content.contraptions.components.tracks; -import static net.minecraft.state.properties.RailShape.NORTH_SOUTH; +import javax.annotation.Nullable; +import javax.annotation.ParametersAreNonnullByDefault; -import javanet.minimport com.simibubi.create.AllBlocks; +import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.VecHelper; -import javax.annotation.Nullable; -import javax.annotation.ParametersAreNonnullByDefault; -import mcp.MethodsReturnNonnullByDefault; + +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -27,7 +27,6 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Mirror; import net.minecraft.world.level.block.Rotation; -import net.minecraft.world.level.block.state.BlockBehaviour.Properties; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -35,44 +34,9 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.minecraft.world.level.block.state.properties.Property; +import net.minecraft.world.level.block.state.properties.RailShape; import net.minecraft.world.phys.Vec3; -ecraft.world.level.block.state.properties.RailShapeotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.wrench.IWrenchable; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.VecHelper; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.AbstractRailBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.entity.item.minecart.FurnaceMinecartEntity; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemUseContext; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.EnumProperty; -import net.minecraft.state.IntegerProperty; -import net.minecraft.state.Property; -import net.minecraft.state.StateContainer; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.state.properties.RailShape; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.Mirror; -import net.minecraft.util.Rotation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3i; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class ControllerRailBlock extends BaseRailBlock implements IWrenchable { @@ -86,7 +50,7 @@ public class ControllerRailBlock extends BaseRailBlock implements IWrenchable { this.registerDefaultState(this.stateDefinition.any() .setValue(POWER, 0) .setValue(BACKWARDS, false) - .setValue(SHAPE, NORTH_SOUTH)); + .setValue(SHAPE, RailShape.NORTH_SOUTH)); } public static Vec3i getAccelerationVector(BlockState state) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/turntable/TurntableBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/turntable/TurntableBlock.java index 6d1f1ae3b7..914b0d78bb 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/turntable/TurntableBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/turntable/TurntableBlock.java @@ -89,7 +89,7 @@ public class TurntableBlock extends KineticBlock implements ITE 1/4f) speed *= Mth.clamp((1/2f - offset.length()) * 2, 0, 1); - mc.player.yRot = mc.player.yRotO - speed * AnimationTickHolder.getPartialTicks(); - mc.player.yBodyRot = mc.player.yRot; + mc.player.setYRot(mc.player.yRotO - speed * AnimationTickHolder.getPartialTicks()); + mc.player.yBodyRot = mc.player.getYRot(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/turntable/TurntableTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/turntable/TurntableTileEntity.java index 1a778670fd..eae84a2da7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/turntable/TurntableTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/turntable/TurntableTileEntity.java @@ -2,12 +2,14 @@ package com.simibubi.create.content.contraptions.components.turntable; import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; public class TurntableTileEntity extends KineticTileEntity { - public TurntableTileEntity(BlockEntityType type) { - super(type); + public TurntableTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelBlock.java index 20c1f794d4..d3012934da 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelBlock.java @@ -13,6 +13,7 @@ import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelTileEntity.java index 78ab63e177..f9d9416734 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelTileEntity.java @@ -8,6 +8,7 @@ import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.utility.Iterate; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -18,8 +19,8 @@ public class WaterWheelTileEntity extends GeneratingKineticTileEntity { private Map flows; - public WaterWheelTileEntity(BlockEntityType type) { - super(type); + public WaterWheelTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); flows = new HashMap<>(); for (Direction d : Iterate.directions) setFlow(d, 0); @@ -27,8 +28,8 @@ public class WaterWheelTileEntity extends GeneratingKineticTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); + protected void fromTag(CompoundTag compound, boolean clientPacket) { + super.fromTag(compound, clientPacket); if (compound.contains("Flows")) { for (Direction d : Iterate.directions) setFlow(d, compound.getCompound("Flows") diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPropagator.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPropagator.java index f93cb06e7c..4f5d0d5b44 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPropagator.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPropagator.java @@ -182,7 +182,7 @@ public class FluidPropagator { return AllConfigs.SERVER.fluids.mechanicalPumpRange.get(); } -// static AxisAlignedBB smallCenter = new AxisAlignedBB(BlockPos.ZERO).shrink(.25); +// static AABB smallCenter = new AABB(BlockPos.ZERO).shrink(.25); // // @Deprecated // public static OutlineParams showBlockFace(BlockFace face) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/OpenEndedPipe.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/OpenEndedPipe.java index 6fb5a71b20..6e1dd4f453 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/OpenEndedPipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/OpenEndedPipe.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.contraptions.fluids; -import static net.minecraft.state.properties.BlockStateProperties.LEVEL_HONEY; +import static net.minecraft.world.level.block.state.properties.BlockStateProperties.LEVEL_HONEY; +import static net.minecraft.world.level.block.state.properties.BlockStateProperties.WATERLOGGED; import java.util.ArrayList; import java.util.List; @@ -29,6 +30,7 @@ import net.minecraft.world.item.alchemy.PotionUtils; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.LiquidBlock; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; import net.minecraft.world.phys.AABB; @@ -130,7 +132,7 @@ public class OpenEndedPipe extends FlowSource { FluidState fluidState = state.getFluidState(); boolean waterlog = state.hasProperty(WATERLOGGED); - if (state.hasProperty(LEVEL_HONEY) && state.getValue(LEVEL_HONEY) >= 5) { + if (state.hasProperty(BlockStateProperties.LEVEL_HONEY) && state.getValue(LEVEL_HONEY) >= 5) { if (!simulate) world.setBlock(outputPos, state.setValue(LEVEL_HONEY, 0), 3); return new FluidStack(AllFluids.HONEY.get() diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeConnection.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeConnection.java index 27ad02ec6e..441279d0dd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeConnection.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeConnection.java @@ -459,7 +459,7 @@ public class PipeConnection { // Vector3d scale = new Vector3d(1, 1, 1).subtract(directionVec.scale(side.getAxisDirection() // .getOffset())) // .scale(size); -// AxisAlignedBB bb = new AxisAlignedBB(start, start.add(offset)).offset(VecHelper.getCenterOf(pos)) +// AABB bb = new AABB(start, start.add(offset)).offset(VecHelper.getCenterOf(pos)) // .grow(scale.x, scale.y, scale.z); // // int color = 0x7fdbda; diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpCogInstance.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpCogInstance.java index c97b531b9e..471e33b31b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpCogInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpCogInstance.java @@ -1,23 +1,15 @@ package com.simibubi.create.content.contraptions.fluids; -import static net.minecraft.state.properties.BlockStateProperties.FACING; - -import com.net.minimport com.jozufozu.flywheel.backend.instancing.Instancer; +import com.jozufozu.flywheel.backend.instancing.Instancer; import com.jozufozu.flywheel.backend.material.MaterialManager; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.RotatingData; -import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; -import net.minecraft.core.Direction; -import net.minecraft.world.level.block.state.BlockState; - -ecraft.world.level.block.state.properties.BlockStatePropertiesport com.jozufozu.flywheel.backend.material.MaterialManager; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.RotatingData; import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; public class PumpCogInstance extends SingleRotatingInstance { @@ -28,7 +20,7 @@ public class PumpCogInstance extends SingleRotatingInstance { @Override protected Instancer getModel() { BlockState referenceState = tile.getBlockState(); - Direction facing = referenceState.getValue(FACING); + Direction facing = referenceState.getValue(BlockStateProperties.FACING); return getRotatingMaterial().getModel(AllBlockPartials.MECHANICAL_PUMP_COG, referenceState, facing); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java index d907e0c5a2..b484e01ee7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java @@ -42,8 +42,8 @@ public class PumpTileEntity extends KineticTileEntity { boolean pressureUpdate; boolean reversed; - public PumpTileEntity(BlockEntityType typeIn) { - super(typeIn); + public PumpTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { + super(typeIn, pos, state); arrowDirection = LerpedFloat.linear() .startWithValue(1); sidesToUpdate = Couple.create(MutableBoolean::new); @@ -311,9 +311,9 @@ public class PumpTileEntity extends KineticTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { reversed = compound.getBoolean("Reversed"); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); } public void updatePipesOnSide(Direction side) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidDrainingBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidDrainingBehaviour.java index 0df4700377..58b2d3f292 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidDrainingBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidDrainingBehaviour.java @@ -67,7 +67,7 @@ public class FluidDrainingBehaviour extends FluidManipulationBehaviour { } if (affectedArea == null) - affectedArea = new BoundingBox(root, root); + affectedArea = BoundingBox.fromCorners(root, root); Level world = getWorld(); if (!queue.isEmpty() && !isValid) { @@ -95,7 +95,7 @@ public class FluidDrainingBehaviour extends FluidManipulationBehaviour { if (blockState.getValue(LiquidBlock.LEVEL) == 0) fluid = flowingFluid.getFluid(); else { - affectedArea.expand(new BoundingBox(currentPos, currentPos)); + affectedArea.encapsulate(BoundingBox.fromCorners(currentPos, currentPos)); if (!tileEntity.isVirtual()) world.setBlock(currentPos, emptied, 2 | 16); queue.dequeue(); @@ -139,7 +139,7 @@ public class FluidDrainingBehaviour extends FluidManipulationBehaviour { if (!tileEntity.isVirtual()) world.setBlock(currentPos, emptied, 2 | 16); - affectedArea.expand(new BoundingBox(currentPos, currentPos)); + affectedArea.encapsulate(BoundingBox.fromCorners(currentPos, currentPos)); queue.dequeue(); if (queue.isEmpty()) { @@ -236,7 +236,7 @@ public class FluidDrainingBehaviour extends FluidManipulationBehaviour { public void rebuildContext(BlockPos root) { reset(); rootPos = root; - affectedArea = new BoundingBox(rootPos, rootPos); + affectedArea = BoundingBox.fromCorners(rootPos, rootPos); if (isValid) frontier.add(new BlockPosEntry(root, 0)); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidFillingBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidFillingBehaviour.java index aedfabdb89..d8a639b95b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidFillingBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidFillingBehaviour.java @@ -99,7 +99,7 @@ public class FluidFillingBehaviour extends FluidManipulationBehaviour { reset(); rootPos = root; queue.enqueue(new BlockPosEntry(root, 0)); - affectedArea = new BoundingBox(rootPos, rootPos); + affectedArea = BoundingBox.fromCorners(rootPos, rootPos); return false; } @@ -110,7 +110,7 @@ public class FluidFillingBehaviour extends FluidManipulationBehaviour { } if (affectedArea == null) - affectedArea = new BoundingBox(root, root); + affectedArea = BoundingBox.fromCorners(root, root); if (revalidateIn == 0) { visited.clear(); @@ -207,7 +207,7 @@ public class FluidFillingBehaviour extends FluidManipulationBehaviour { } } - affectedArea.expand(new BoundingBox(currentPos, currentPos)); + affectedArea.encapsulate(BoundingBox.fromCorners(currentPos, currentPos)); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidManipulationBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidManipulationBehaviour.java index 0ea47fc1cf..c36f5ea5cb 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidManipulationBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidManipulationBehaviour.java @@ -233,7 +233,7 @@ public abstract class FluidManipulationBehaviour extends TileEntityBehaviour { if (nbt.contains("LastPos")) rootPos = NbtUtils.readBlockPos(nbt.getCompound("LastPos")); if (nbt.contains("AffectedAreaFrom") && nbt.contains("AffectedAreaTo")) - affectedArea = new BoundingBox(NbtUtils.readBlockPos(nbt.getCompound("AffectedAreaFrom")), + affectedArea = BoundingBox.fromCorners(NbtUtils.readBlockPos(nbt.getCompound("AffectedAreaFrom")), NbtUtils.readBlockPos(nbt.getCompound("AffectedAreaTo"))); super.read(nbt, clientPacket); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyTileEntity.java index 65c1d884ac..67234bda86 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyTileEntity.java @@ -9,6 +9,7 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.ServerSpeedProvider; import com.simibubi.create.foundation.utility.animation.LerpedFloat; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; @@ -34,8 +35,8 @@ public class HosePulleyTileEntity extends KineticTileEntity { private HosePulleyFluidHandler handler; private boolean infinite; - public HosePulleyTileEntity(BlockEntityType typeIn) { - super(typeIn); + public HosePulleyTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { + super(typeIn, pos, state); offset = LerpedFloat.linear() .startWithValue(0); isMoving = true; @@ -103,12 +104,6 @@ public class HosePulleyTileEntity extends KineticTileEntity { return super.getRenderBoundingBox().expandTowards(0, -offset.getValue(), 0); } - @Override - @OnlyIn(Dist.CLIENT) - public double getViewDistance() { - return super.getViewDistance() + offset.getValue() * offset.getValue(); - } - @Override public void tick() { super.tick(); @@ -160,10 +155,10 @@ public class HosePulleyTileEntity extends KineticTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { offset.readNBT(compound.getCompound("Offset"), clientPacket); internalTank.readFromNBT(compound.getCompound("Tank")); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); if (clientPacket) infinite = compound.getBoolean("Infinite"); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainBlock.java index c70c4ec91c..4f996b5630 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainBlock.java @@ -54,7 +54,7 @@ public class ItemDrainBlock extends Block implements IWrenchable, ITE> itemHandlers; - public ItemDrainTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public ItemDrainTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); itemHandlers = new IdentityHashMap<>(); for (Direction d : Iterate.horizontalDirections) { ItemDrainItemHandler itemDrainItemHandler = new ItemDrainItemHandler(this, d); @@ -270,12 +270,12 @@ public class ItemDrainTileEntity extends SmartTileEntity implements IHaveGoggleI } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { heldItem = null; processingTicks = compound.getInt("ProcessingTicks"); if (compound.contains("HeldItem")) heldItem = TransportedItemStack.read(compound.getCompound("HeldItem")); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutTileEntity.java index a11b1bfacf..0985a82817 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutTileEntity.java @@ -21,6 +21,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemS import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour; import com.simibubi.create.foundation.utility.VecHelper; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.nbt.CompoundTag; @@ -50,8 +51,8 @@ public class SpoutTileEntity extends SmartTileEntity implements IHaveGoggleInfor SmartFluidTankBehaviour tank; - public SpoutTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public SpoutTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); processingTicks = -1; } @@ -150,8 +151,8 @@ public class SpoutTileEntity extends SmartTileEntity implements IHaveGoggleInfor } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); + protected void fromTag(CompoundTag compound, boolean clientPacket) { + super.fromTag(compound, clientPacket); processingTicks = compound.getInt("ProcessingTicks"); if (!clientPacket) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlockItem.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlockItem.java index 50d27f3196..2fc07a8e5b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlockItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlockItem.java @@ -61,7 +61,7 @@ public class BracketBlockItem extends BlockItem { if (player == null) Block.popResource(world, pos, returnedStack); else - player.inventory.placeItemBackInInventory(world, returnedStack); + player.getInventory().placeItemBackInInventory(returnedStack); } } return InteractionResult.SUCCESS; diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java index 11fc755c87..5727d6c50f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java @@ -1,8 +1,11 @@ package com.simibubi.create.content.contraptions.fluids.pipes; -import static net.minecraft.state.properties.BlockStateProperties.DOWN; -import static net.minecraft.state.properties.BlockStateProperties.NORTH; -import static net.minecraft.state.properties.BlockStateProperties.UP; +import static net.minecraft.world.level.block.state.properties.BlockStateProperties.DOWN; +import static net.minecraft.world.level.block.state.properties.BlockStateProperties.EAST; +import static net.minecraft.world.level.block.state.properties.BlockStateProperties.NORTH; +import static net.minecraft.world.level.block.state.properties.BlockStateProperties.SOUTH; +import static net.minecraft.world.level.block.state.properties.BlockStateProperties.UP; +import static net.minecraft.world.level.block.state.properties.BlockStateProperties.WEST; import java.util.Map; import java.util.Random; @@ -56,7 +59,7 @@ public class EncasedPipeBlock extends Block implements IWrenchable, ISpecialBloc } @Override - public boolean hasTileEntity(BlockState state) { + public boolean hasBlockEntity(BlockState state) { return true; } @@ -65,7 +68,7 @@ public class EncasedPipeBlock extends Block implements IWrenchable, ISpecialBloc boolean blockTypeChanged = state.getBlock() != newState.getBlock(); if (blockTypeChanged && !world.isClientSide) FluidPropagator.propagateChangedPipe(world, pos, state); - if (state.hasTileEntity() && (blockTypeChanged || !newState.hasTileEntity())) + if (state.hasBlockEntity() && (blockTypeChanged || !newState.hasTileEntity())) world.removeBlockEntity(pos); } @@ -77,8 +80,7 @@ public class EncasedPipeBlock extends Block implements IWrenchable, ISpecialBloc } @Override - public ItemStack getPickBlock(BlockState state, HitResult target, BlockGetter world, BlockPos pos, - Player player) { + public ItemStack getPickBlock(BlockState state, HitResult target, BlockGetter world, BlockPos pos, Player player) { return AllBlocks.FLUID_PIPE.asStack(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeTileEntity.java index 21efe120a6..8fc588c397 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeTileEntity.java @@ -17,8 +17,8 @@ import net.minecraft.world.level.block.state.BlockState; public class FluidPipeTileEntity extends SmartTileEntity { - public FluidPipeTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public FluidPipeTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveTileEntity.java index cdc0093881..31276bca2c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveTileEntity.java @@ -9,6 +9,7 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.animation.LerpedFloat; import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.Mth; @@ -20,8 +21,8 @@ public class FluidValveTileEntity extends KineticTileEntity { LerpedFloat pointer; - public FluidValveTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public FluidValveTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { + super(typeIn, pos, state); pointer = LerpedFloat.linear() .startWithValue(0) .chase(0, 0, Chaser.LINEAR); @@ -69,8 +70,8 @@ public class FluidValveTileEntity extends KineticTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); + protected void fromTag(CompoundTag compound, boolean clientPacket) { + super.fromTag(compound, clientPacket); pointer.readNBT(compound.getCompound("Pointer"), clientPacket); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/GlassFluidPipeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/GlassFluidPipeBlock.java index 43638ee04c..a91b772a2c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/GlassFluidPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/GlassFluidPipeBlock.java @@ -8,6 +8,7 @@ import com.simibubi.create.content.contraptions.fluids.FluidTransportBehaviour; import com.simibubi.create.content.schematics.ISpecialBlockItemRequirement; import com.simibubi.create.content.schematics.ItemRequirement; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.context.BlockPlaceContext; diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeTileEntity.java index 6e810c6e82..bde4dbf8c8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeTileEntity.java @@ -13,6 +13,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBe import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.VecHelper; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.world.item.ItemStack; @@ -26,8 +27,8 @@ public class SmartFluidPipeTileEntity extends SmartTileEntity { private FilteringBehaviour filter; - public SmartFluidPipeTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public SmartFluidPipeTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/StraightPipeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/StraightPipeTileEntity.java index c786d42c1b..56469dbaa0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/StraightPipeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/StraightPipeTileEntity.java @@ -17,8 +17,8 @@ import net.minecraft.world.level.block.state.BlockState; public class StraightPipeTileEntity extends SmartTileEntity { - public StraightPipeTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public StraightPipeTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/CreativeFluidTankTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/CreativeFluidTankTileEntity.java index f75e8a5194..cae5e65b5d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/CreativeFluidTankTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/CreativeFluidTankTileEntity.java @@ -5,14 +5,16 @@ import java.util.function.Consumer; import com.simibubi.create.foundation.fluid.SmartFluidTank; +import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.fluids.FluidStack; public class CreativeFluidTankTileEntity extends FluidTankTileEntity { - public CreativeFluidTankTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public CreativeFluidTankTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankTileEntity.java index eb9a3a7b51..dac144981c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankTileEntity.java @@ -59,8 +59,8 @@ public class FluidTankTileEntity extends SmartTileEntity implements IHaveGoggleI private InterpolatedChasingValue fluidLevel; private AABB renderBoundingBox; - public FluidTankTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public FluidTankTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); tankInventory = createInventory(); fluidCapability = LazyOptional.of(() -> tankInventory); forceFluidLevelUpdate = true; @@ -315,13 +315,6 @@ public class FluidTankTileEntity extends SmartTileEntity implements IHaveGoggleI return renderBoundingBox; } - @Override - @OnlyIn(Dist.CLIENT) - public double getViewDistance() { - int dist = 64 + getMaxHeight() * 2; - return dist * dist; - } - @Nullable public FluidTankTileEntity getOtherFluidTankTileEntity(Direction direction) { BlockEntity otherTE = level.getBlockEntity(worldPosition.relative(direction)); @@ -340,8 +333,8 @@ public class FluidTankTileEntity extends SmartTileEntity implements IHaveGoggleI } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); + protected void fromTag(CompoundTag compound, boolean clientPacket) { + super.fromTag(compound, clientPacket); BlockPos controllerBefore = controller; int prevSize = width; diff --git a/src/main/java/com/simibubi/create/content/contraptions/particle/HeaterParticle.java b/src/main/java/com/simibubi/create/content/contraptions/particle/HeaterParticle.java index c9b8bb8778..3d02e32eac 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/particle/HeaterParticle.java +++ b/src/main/java/com/simibubi/create/content/contraptions/particle/HeaterParticle.java @@ -2,6 +2,7 @@ package com.simibubi.create.content.contraptions.particle; import javax.annotation.ParametersAreNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.Particle; import net.minecraft.client.particle.ParticleProvider; diff --git a/src/main/java/com/simibubi/create/content/contraptions/particle/HeaterParticleData.java b/src/main/java/com/simibubi/create/content/contraptions/particle/HeaterParticleData.java index a62d4c24d3..bcaebea9bc 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/particle/HeaterParticleData.java +++ b/src/main/java/com/simibubi/create/content/contraptions/particle/HeaterParticleData.java @@ -10,6 +10,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import com.simibubi.create.AllParticleTypes; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.client.particle.ParticleEngine.SpriteParticleRegistration; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleType; diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinBlock.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinBlock.java index 5721c7f1eb..4bb40f1392 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinBlock.java @@ -119,7 +119,7 @@ public class BasinBlock extends Block implements ITE, IWrenchab ItemStack stackInSlot = inv.getStackInSlot(slot); if (stackInSlot.isEmpty()) continue; - player.inventory.placeItemBackInInventory(worldIn, stackInSlot); + player.getInventory().placeItemBackInInventory(worldIn, stackInSlot); inv.setStackInSlot(slot, ItemStack.EMPTY); success = true; } @@ -150,7 +150,7 @@ public class BasinBlock extends Block implements ITE, IWrenchab te.inputInventory.withMaxStackSize(16); if (insertItem.isEmpty()) { - itemEntity.remove(); + itemEntity.discard(); if (!itemEntity.level.isClientSide) AllTriggers.triggerForNearbyPlayers(AllTriggers.BASIN_THROW, itemEntity.level, itemEntity.blockPosition(), 3); diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java index 0157b61a05..62d0e2e8b8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java @@ -11,10 +11,12 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.simple.DeferralBehaviour; import com.simibubi.create.foundation.utility.recipe.RecipeFinder; +import net.minecraft.core.BlockPos; import net.minecraft.world.Container; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; public abstract class BasinOperatingTileEntity extends KineticTileEntity { @@ -22,8 +24,8 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity { public boolean basinRemoved; protected Recipe currentRecipe; - public BasinOperatingTileEntity(BlockEntityType typeIn) { - super(typeIn); + public BasinOperatingTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { + super(typeIn, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRenderer.java index b048a06a33..df4e2f62aa 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRenderer.java @@ -179,5 +179,10 @@ public class BasinRenderer extends SmartTileEntityRenderer { return yMax; } + + @Override + public int getViewDistance() { + return 16; + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java index d686c0b8b8..dd232a1f0d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java @@ -51,8 +51,6 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.common.util.LazyOptional; @@ -94,8 +92,8 @@ public class BasinTileEntity extends SmartTileEntity implements IHaveGoggleInfor List> visualizedOutputItems; List> visualizedOutputFluids; - public BasinTileEntity(BlockEntityType type) { - super(type); + public BasinTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); inputInventory = new BasinInventory(9, this); inputInventory.whenContentsChanged($ -> contentsChanged = true); outputInventory = new BasinInventory(9, this).forbidInsertion() @@ -142,8 +140,8 @@ public class BasinTileEntity extends SmartTileEntity implements IHaveGoggleInfor } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); + protected void fromTag(CompoundTag compound, boolean clientPacket) { + super.fromTag(compound, clientPacket); inputInventory.deserializeNBT(compound.getCompound("InputItems")); outputInventory.deserializeNBT(compound.getCompound("OutputItems")); @@ -441,12 +439,6 @@ public class BasinTileEntity extends SmartTileEntity implements IHaveGoggleInfor return outputInventory; } - @Override - @OnlyIn(Dist.CLIENT) - public double getViewDistance() { - return 256; - } - public boolean canContinueProcessing() { return spoutputBuffer.isEmpty() && spoutputFluidBuffer.isEmpty(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipe.java index ac5fd9bbea..d5ca2c70be 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipe.java @@ -15,6 +15,7 @@ import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuild import com.simibubi.create.foundation.fluid.FluidIngredient; import com.simibubi.create.foundation.utility.recipe.IRecipeTypeInfo; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.NonNullList; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeSerializer.java b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeSerializer.java index 261ddd4310..4f67209ace 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeSerializer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeSerializer.java @@ -9,6 +9,7 @@ import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuild import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.fluid.FluidIngredient; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.NonNullList; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlock.java index c7b1f6d873..59b19a9271 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlock.java @@ -129,7 +129,7 @@ public class BlazeBurnerBlock extends Block implements ITE tileEntityTypeIn) { - super(tileEntityTypeIn); + public BlazeBurnerTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); activeFuel = FuelType.NONE; remainingBurnTime = 0; headAngle = LerpedFloat.angular(); @@ -134,11 +135,11 @@ public class BlazeBurnerTileEntity extends SmartTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { activeFuel = FuelType.values()[compound.getInt("fuelLevel")]; remainingBurnTime = compound.getInt("burnTimeRemaining"); isCreative = compound.getBoolean("isCreative"); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); } public BlazeBurnerBlock.HeatLevel getHeatLevelFromBlock() { @@ -172,7 +173,7 @@ public class BlazeBurnerTileEntity extends SmartTileEntity { newBurnTime = 1000; newFuel = FuelType.SPECIAL; } else { - newBurnTime = ForgeHooks.getBurnTime(itemStack); + newBurnTime = ForgeHooks.getBurnTime(itemStack, null); if (newBurnTime > 0) newFuel = FuelType.NORMAL; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/GantryShaftTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/GantryShaftTileEntity.java index 7a5da1ed76..62a0f4200f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/GantryShaftTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/GantryShaftTileEntity.java @@ -15,8 +15,8 @@ import net.minecraft.world.level.block.state.BlockState; public class GantryShaftTileEntity extends KineticTileEntity { - public GantryShaftTileEntity(BlockEntityType typeIn) { - super(typeIn); + public GantryShaftTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { + super(typeIn, pos, state); } public void checkAttachedCarriageBlocks() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerBlock.java index f0de2641c7..05c1e65c5f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerBlock.java @@ -15,6 +15,7 @@ import com.simibubi.create.foundation.utility.placement.IPlacementHelper; import com.simibubi.create.foundation.utility.placement.PlacementHelpers; import com.simibubi.create.foundation.utility.placement.PlacementOffset; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.world.InteractionHand; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java index 8a83dc01f5..9f213cafc0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java @@ -14,6 +14,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollVal import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.VecHelper; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -26,8 +27,8 @@ public class SpeedControllerTileEntity extends KineticTileEntity { boolean hasBracket; - public SpeedControllerTileEntity(BlockEntityType type) { - super(type); + public SpeedControllerTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); hasBracket = false; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftTileEntity.java index 42de2352ea..a55e9b882e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftTileEntity.java @@ -4,6 +4,7 @@ import java.util.Vector; import com.simibubi.create.content.contraptions.relays.encased.SplitShaftTileEntity; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -19,8 +20,8 @@ public class SequencedGearshiftTileEntity extends SplitShaftTileEntity { int timer; boolean poweredPreviously; - public SequencedGearshiftTileEntity(BlockEntityType type) { - super(type); + public SequencedGearshiftTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); instructions = Instruction.createDefault(); currentInstruction = -1; currentInstructionDuration = -1; @@ -145,14 +146,14 @@ public class SequencedGearshiftTileEntity extends SplitShaftTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { currentInstruction = compound.getInt("InstructionIndex"); currentInstructionDuration = compound.getInt("InstructionDuration"); currentInstructionProgress = compound.getFloat("InstructionProgress"); poweredPreviously = compound.getBoolean("PrevPowered"); timer = compound.getInt("Timer"); instructions = Instruction.deserializeAll(compound.getList("Instructions", NBT.TAG_COMPOUND)); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java index 161c5e1c49..fcd69acde0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java @@ -174,7 +174,7 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE { - player.inventory.placeItemBackInInventory(world, transportedItemStack.stack); + player.getInventory().placeItemBackInInventory(transportedItemStack.stack); success.setTrue(); return TransportedResult.removeItem(); }); @@ -326,7 +326,7 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE { @@ -169,8 +169,8 @@ public class BeltInstance extends KineticTileInstance { .setRotationOffset(bottom ? 0.5f : 0f) .setColor(tile) .setPosition(getInstancePosition()) - .setBlockLight(world.getBrightness(LightType.BLOCK, pos)) - .setSkyLight(world.getBrightness(LightType.SKY, pos)); + .setBlockLight(world.getBrightness(LightLayer.BLOCK, pos)) + .setSkyLight(world.getBrightness(LightLayer.SKY, pos)); return key; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltShapes.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltShapes.java index 5e077c8895..f1d0deb9c7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltShapes.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltShapes.java @@ -1,11 +1,13 @@ package com.simibubi.create.content.contraptions.relays.belt; -import static net.minecraft.block.Block.box; +import static net.minecraft.world.level.block.Block.box; -import javanimport com.simibubi.create.AllShapes; -import com.simibubi.create.foundation.utility.VoxelShaper; import java.util.HashMap; import java.util.Map; + +import com.simibubi.create.AllShapes; +import com.simibubi.create.foundation.utility.VoxelShaper; + import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.world.level.block.state.BlockState; @@ -14,19 +16,6 @@ import net.minecraft.world.phys.shapes.BooleanOp; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -et.minecraft.world.level.block.Blockva.util.Map; - -import com.simibubi.create.AllShapes; -import com.simibubi.create.foundation.utility.VoxelShaper; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.shapes.IBooleanFunction; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.shapes.VoxelShapes; -import net.minecraft.util.math.vector.Vector3d; - public class BeltShapes { /* diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlicer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlicer.java index 595b3225f5..1ceb5bfde5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlicer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlicer.java @@ -98,7 +98,7 @@ public class BeltSlicer { if (!creative && AllBlocks.BELT.has(replacedState) && replacedState.getValue(BeltBlock.PART) == BeltPart.PULLEY) - player.inventory.placeItemBackInInventory(world, AllBlocks.SHAFT.asStack()); + player.getInventory().placeItemBackInInventory(AllBlocks.SHAFT.asStack()); // Eject overshooting items if (part == BeltPart.END && inventory != null) { @@ -162,11 +162,11 @@ public class BeltSlicer { int amountRetrieved = 0; boolean beltFound = false; Search: while (true) { - for (int i = 0; i < player.inventory.getContainerSize(); ++i) { + for (int i = 0; i < player.getInventory().getContainerSize(); ++i) { if (amountRetrieved == requiredShafts && beltFound) break Search; - ItemStack itemstack = player.inventory.getItem(i); + ItemStack itemstack = player.getInventory().getItem(i); if (itemstack.isEmpty()) continue; int count = itemstack.getCount(); @@ -182,7 +182,7 @@ public class BeltSlicer { int taken = Math.min(count, requiredShafts - amountRetrieved); if (!world.isClientSide) if (taken == count) - player.inventory.setItem(i, ItemStack.EMPTY); + player.getInventory().setItem(i, ItemStack.EMPTY); else itemstack.shrink(taken); amountRetrieved += taken; @@ -190,7 +190,7 @@ public class BeltSlicer { } if (!world.isClientSide) - player.inventory.placeItemBackInInventory(world, AllBlocks.SHAFT.asStack(amountRetrieved)); + player.getInventory().placeItemBackInInventory(AllBlocks.SHAFT.asStack(amountRetrieved)); return InteractionResult.FAIL; } } @@ -345,8 +345,8 @@ public class BeltSlicer { .setValue(BeltBlock.PART, BeltPart.MIDDLE)); if (!creative) { - player.inventory.placeItemBackInInventory(world, AllBlocks.SHAFT.asStack(2)); - player.inventory.placeItemBackInInventory(world, AllItems.BELT_CONNECTOR.asStack()); + player.getInventory().placeItemBackInInventory(AllBlocks.SHAFT.asStack(2)); + player.getInventory().placeItemBackInInventory(AllItems.BELT_CONNECTOR.asStack()); } // Transfer items to other controller diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java index 1fbfe05944..0b730f387b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java @@ -2,7 +2,8 @@ package com.simibubi.create.content.contraptions.relays.belt; import static com.simibubi.create.content.contraptions.relays.belt.BeltPart.MIDDLE; import static com.simibubi.create.content.contraptions.relays.belt.BeltSlope.HORIZONTAL; -import static net.minecraft.util.Direction.AxisDirection.NEGATIVE; +import static net.minecraft.core.Direction.AxisDirection.NEGATIVE; +import static net.minecraft.core.Direction.AxisDirection.POSITIVE; import java.util.ArrayList; import java.util.HashMap; @@ -18,7 +19,6 @@ import com.jozufozu.flywheel.light.ImmutableBox; import com.jozufozu.flywheel.light.LightProvider; import com.jozufozu.flywheel.light.LightUpdater; import com.jozufozu.flywheel.light.ListenerStatus; -import com.mojang.math.Vector3d; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.base.KineticTileEntity; @@ -36,19 +36,23 @@ import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemS import com.simibubi.create.foundation.utility.NBTHelper; import net.minecraft.core.BlockPos; +import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.Direction.Axis; +import net.minecraft.core.Vec3i; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.vector.Vector3i; -import net.minecraft.world.LightType; +import net.minecraft.nbt.NbtUtils; import net.minecraft.world.entity.Entity; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.LightLayer; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.model.data.IModelData; import net.minecraftforge.client.model.data.ModelDataMap; @@ -81,8 +85,8 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis NONE, ANDESITE, BRASS; } - public BeltTileEntity(BlockEntityType type) { - super(type); + public BeltTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); controller = BlockPos.ZERO; itemHandler = LazyOptional.empty(); casing = CasingType.NONE; @@ -103,7 +107,7 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis // Init belt if (beltLength == 0) BeltBlock.initBelt(level, worldPosition); - + super.tick(); if (!AllBlocks.BELT.has(level.getBlockState(worldPosition))) @@ -154,7 +158,7 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis } @Override - public AxisAlignedBB makeRenderBoundingBox() { + public AABB makeRenderBoundingBox() { if (!isController()) return super.makeRenderBoundingBox(); else @@ -166,7 +170,7 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis return; if (!level.isLoaded(controller)) return; - TileEntity te = level.getBlockEntity(controller); + BlockEntity te = level.getBlockEntity(controller); if (te == null || !(te instanceof BeltTileEntity)) return; BeltInventory inventory = ((BeltTileEntity) te).getInventory(); @@ -193,9 +197,9 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis } @Override - public void write(CompoundNBT compound, boolean clientPacket) { + public void write(CompoundTag compound, boolean clientPacket) { if (controller != null) - compound.put("Controller", NBTUtil.writeBlockPos(controller)); + compound.put("Controller", NbtUtils.writeBlockPos(controller)); compound.putBoolean("IsController", isController()); compound.putInt("Length", beltLength); compound.putInt("Index", index); @@ -210,9 +214,9 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis } @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { int prevBeltLength = beltLength; - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); if (compound.getBoolean("IsController")) controller = worldPosition; @@ -222,11 +226,11 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis if (!wasMoved) { if (!isController()) - controller = NBTUtil.readBlockPos(compound.getCompound("Controller")); + controller = NbtUtils.readBlockPos(compound.getCompound("Controller")); trackerUpdateTag = compound; index = compound.getInt("Index"); beltLength = compound.getInt("Length"); - if (prevBeltLength != beltLength) + if (prevBeltLength != beltLength) light = null; } @@ -253,7 +257,7 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis beltLength = 0; index = 0; controller = null; - trackerUpdateTag = new CompoundNBT(); + trackerUpdateTag = new CompoundTag(); } public void applyColor(DyeColor colorIn) { @@ -279,7 +283,7 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis return null; if (!level.isLoaded(controller)) return null; - TileEntity te = level.getBlockEntity(controller); + BlockEntity te = level.getBlockEntity(controller); if (te == null || !(te instanceof BeltTileEntity)) return null; return (BeltTileEntity) te; @@ -294,8 +298,8 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis } public boolean isController() { - return controller != null && worldPosition.getX() == controller.getX() && worldPosition.getY() == controller.getY() - && worldPosition.getZ() == controller.getZ(); + return controller != null && worldPosition.getX() == controller.getX() + && worldPosition.getY() == controller.getY() && worldPosition.getZ() == controller.getZ(); } public float getBeltMovementSpeed() { @@ -333,15 +337,15 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis return part == BeltPart.START ^ movingPositively; } - public Vector3i getMovementDirection(boolean firstHalf) { + public Vec3i getMovementDirection(boolean firstHalf) { return this.getMovementDirection(firstHalf, false); } - public Vector3i getBeltChainDirection() { + public Vec3i getBeltChainDirection() { return this.getMovementDirection(true, true); } - protected Vector3i getMovementDirection(boolean firstHalf, boolean ignoreHalves) { + protected Vec3i getMovementDirection(boolean firstHalf, boolean ignoreHalves) { if (getSpeed() == 0) return BlockPos.ZERO; @@ -355,7 +359,7 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis boolean notHorizontal = blockState.getValue(BeltBlock.SLOPE) != HORIZONTAL; if (getSpeed() < 0) movementFacing = movementFacing.getOpposite(); - Vector3i movement = movementFacing.getNormal(); + Vec3i movement = movementFacing.getNormal(); boolean slopeBeforeHalf = (part == BeltPart.END) == (beltFacing.getAxisDirection() == POSITIVE); boolean onSlope = notHorizontal && (part == MIDDLE || slopeBeforeHalf == firstHalf || ignoreHalves); @@ -364,13 +368,12 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis if (!onSlope) return movement; - return new Vector3i(movement.getX(), movingUp ? 1 : -1, movement.getZ()); + return new Vec3i(movement.getX(), movingUp ? 1 : -1, movement.getZ()); } public Direction getMovementFacing() { Axis axis = getBeltFacing().getAxis(); - return Direction.fromAxisAndDirection(axis, - getBeltMovementSpeed() < 0 ^ axis == Axis.X ? NEGATIVE : POSITIVE); + return Direction.fromAxisAndDirection(axis, getBeltMovementSpeed() < 0 ^ axis == Axis.X ? NEGATIVE : POSITIVE); } protected Direction getBeltFacing() { @@ -400,10 +403,10 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis inventory.applyToEachWithin(index + .5f, maxDistanceFromCenter, processFunction); } - private Vector3d getWorldPositionOf(TransportedItemStack transported) { + private Vec3 getWorldPositionOf(TransportedItemStack transported) { BeltTileEntity controllerTE = getControllerTE(); if (controllerTE == null) - return Vector3d.ZERO; + return Vec3.ZERO; return BeltHelper.getVectorForOffset(controllerTE, transported.beltPosition); } @@ -418,7 +421,8 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis boolean shouldBlockHaveCasing = type != CasingType.NONE; BlockState blockState = getBlockState(); if (blockState.getValue(BeltBlock.CASING) != shouldBlockHaveCasing) - KineticTileEntity.switchToBlockState(level, worldPosition, blockState.setValue(BeltBlock.CASING, shouldBlockHaveCasing)); + KineticTileEntity.switchToBlockState(level, worldPosition, + blockState.setValue(BeltBlock.CASING, shouldBlockHaveCasing)); setChanged(); sendData(); } @@ -427,8 +431,8 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis if (getSpeed() == 0) return false; BlockState state = getBlockState(); - if (state.hasProperty(BeltBlock.SLOPE) - && (state.getValue(BeltBlock.SLOPE) == BeltSlope.SIDEWAYS || state.getValue(BeltBlock.SLOPE) == BeltSlope.VERTICAL)) + if (state.hasProperty(BeltBlock.SLOPE) && (state.getValue(BeltBlock.SLOPE) == BeltSlope.SIDEWAYS + || state.getValue(BeltBlock.SLOPE) == BeltSlope.VERTICAL)) return false; return getMovementFacing() != side.getOpposite(); } @@ -444,7 +448,7 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis if (nextInventory == null) return inserted; - TileEntity teAbove = level.getBlockEntity(worldPosition.above()); + BlockEntity teAbove = level.getBlockEntity(worldPosition.above()); if (teAbove instanceof BrassTunnelTileEntity) { BrassTunnelTileEntity tunnelTE = (BrassTunnelTileEntity) teAbove; if (tunnelTE.hasDistributionBehaviour()) { @@ -508,8 +512,8 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis @Override protected boolean canPropagateDiagonally(IRotate block, BlockState state) { - return state.hasProperty(BeltBlock.SLOPE) - && (state.getValue(BeltBlock.SLOPE) == BeltSlope.UPWARD || state.getValue(BeltBlock.SLOPE) == BeltSlope.DOWNWARD); + return state.hasProperty(BeltBlock.SLOPE) && (state.getValue(BeltBlock.SLOPE) == BeltSlope.UPWARD + || state.getValue(BeltBlock.SLOPE) == BeltSlope.DOWNWARD); } @Override @@ -545,19 +549,19 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis } @Override - public void onLightUpdate(LightProvider world, LightType type, ImmutableBox changed) { - if (this.remove) + public void onLightUpdate(LightProvider world, LightLayer type, ImmutableBox changed) { + if (this.remove) return; if (this.level == null) return; - + GridAlignedBB beltVolume = getVolume(); if (beltVolume.intersects(changed)) { - if (type == LightType.BLOCK) + if (type == LightLayer.BLOCK) updateBlockLight(); - if (type == LightType.SKY) + if (type == LightLayer.SKY) updateSkyLight(); } } @@ -566,40 +570,40 @@ public class BeltTileEntity extends KineticTileEntity implements ILightUpdateLis if (beltLength > 0) { light = new byte[beltLength * 2]; - Vector3i vec = getBeltFacing().getNormal(); + Vec3i vec = getBeltFacing().getNormal(); BeltSlope slope = getBlockState().getValue(BeltBlock.SLOPE); int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; - BlockPos.Mutable pos = new BlockPos.Mutable(controller.getX(), controller.getY(), controller.getZ()); + MutableBlockPos pos = new MutableBlockPos(controller.getX(), controller.getY(), controller.getZ()); for (int i = 0; i < beltLength * 2; i += 2) { - light[i] = (byte) level.getBrightness(LightType.BLOCK, pos); - light[i + 1] = (byte) level.getBrightness(LightType.SKY, pos); + light[i] = (byte) level.getBrightness(LightLayer.BLOCK, pos); + light[i + 1] = (byte) level.getBrightness(LightLayer.SKY, pos); pos.move(vec.getX(), verticality, vec.getZ()); } } } private void updateBlockLight() { - Vector3i vec = getBeltFacing().getNormal(); + Vec3i vec = getBeltFacing().getNormal(); BeltSlope slope = getBlockState().getValue(BeltBlock.SLOPE); int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; - BlockPos.Mutable pos = new BlockPos.Mutable(controller.getX(), controller.getY(), controller.getZ()); + MutableBlockPos pos = new MutableBlockPos(controller.getX(), controller.getY(), controller.getZ()); for (int i = 0; i < beltLength * 2; i += 2) { - light[i] = (byte) level.getBrightness(LightType.BLOCK, pos); + light[i] = (byte) level.getBrightness(LightLayer.BLOCK, pos); pos.move(vec.getX(), verticality, vec.getZ()); } } private void updateSkyLight() { - Vector3i vec = getBeltFacing().getNormal(); + Vec3i vec = getBeltFacing().getNormal(); BeltSlope slope = getBlockState().getValue(BeltBlock.SLOPE); int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; - BlockPos.Mutable pos = new BlockPos.Mutable(controller.getX(), controller.getY(), controller.getZ()); + MutableBlockPos pos = new MutableBlockPos(controller.getX(), controller.getY(), controller.getZ()); for (int i = 1; i < beltLength * 2; i += 2) { - light[i] = (byte) level.getBrightness(LightType.SKY, pos); + light[i] = (byte) level.getBrightness(LightLayer.SKY, pos); pos.move(vec.getX(), verticality, vec.getZ()); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java index dc3591d7e2..4b9d74b3b0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java @@ -1,7 +1,8 @@ package com.simibubi.create.content.contraptions.relays.belt.transport; -import static net.minecraft.entity.MoverType.SELF; -import static net.minecraft.util.Direction.AxisDirection.POSITIVE; +import static net.minecraft.core.Direction.AxisDirection.NEGATIVE; +import static net.minecraft.core.Direction.AxisDirection.POSITIVE; +import static net.minecraft.world.entity.MoverType.SELF; import java.util.List; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java index 8af7471283..47d144b16f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java @@ -8,6 +8,7 @@ import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerBlock; import com.simibubi.create.foundation.utility.Iterate; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogwheelBlockItem.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogwheelBlockItem.java index 42cac3add0..a5b86d03fa 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogwheelBlockItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogwheelBlockItem.java @@ -14,6 +14,7 @@ import com.simibubi.create.foundation.utility.placement.IPlacementHelper; import com.simibubi.create.foundation.utility.placement.PlacementHelpers; import com.simibubi.create.foundation.utility.placement.PlacementOffset; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java index dcd9ee3d0f..ac1d647e8c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java @@ -11,6 +11,7 @@ import com.simibubi.create.foundation.utility.placement.IPlacementHelper; import com.simibubi.create.foundation.utility.placement.PlacementHelpers; import com.simibubi.create.foundation.utility.placement.util.PoleHelper; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.InteractionHand; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/SimpleKineticTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/SimpleKineticTileEntity.java index b51bf8c2c1..d5a64ccc8f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/SimpleKineticTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/SimpleKineticTileEntity.java @@ -14,8 +14,8 @@ import net.minecraft.world.phys.AABB; public class SimpleKineticTileEntity extends KineticTileEntity { - public SimpleKineticTileEntity(BlockEntityType type) { - super(type); + public SimpleKineticTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/AbstractEncasedShaftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/AbstractEncasedShaftBlock.java index dfbb8b5192..229d200970 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/AbstractEncasedShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/AbstractEncasedShaftBlock.java @@ -4,6 +4,7 @@ import javax.annotation.Nullable; import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.context.BlockPlaceContext; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/AdjustablePulleyTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/AdjustablePulleyTileEntity.java index 8b0c578af2..ec85dba52c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/AdjustablePulleyTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/AdjustablePulleyTileEntity.java @@ -2,6 +2,7 @@ package com.simibubi.create.content.contraptions.relays.encased; import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -11,8 +12,8 @@ public class AdjustablePulleyTileEntity extends KineticTileEntity { int signal; boolean signalChanged; - public AdjustablePulleyTileEntity(BlockEntityType type) { - super(type); + public AdjustablePulleyTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); signal = 0; setLazyTickRate(40); } @@ -24,9 +25,9 @@ public class AdjustablePulleyTileEntity extends KineticTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { signal = compound.getInt("Signal"); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); } public float getModifier() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ClutchTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ClutchTileEntity.java index 5a36f6853c..23fade805e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ClutchTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ClutchTileEntity.java @@ -1,13 +1,15 @@ package com.simibubi.create.content.contraptions.relays.encased; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; public class ClutchTileEntity extends SplitShaftTileEntity { - public ClutchTileEntity(BlockEntityType type) { - super(type); + public ClutchTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/DirectionalShaftHalvesTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/DirectionalShaftHalvesTileEntity.java index 1ddffb0ac7..04f9f6b350 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/DirectionalShaftHalvesTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/DirectionalShaftHalvesTileEntity.java @@ -5,11 +5,12 @@ import com.simibubi.create.content.contraptions.base.KineticTileEntity; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; public class DirectionalShaftHalvesTileEntity extends KineticTileEntity { - public DirectionalShaftHalvesTileEntity(BlockEntityType typeIn) { - super(typeIn); + public DirectionalShaftHalvesTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { + super(typeIn, pos, state); } public Direction getSourceFacing() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftTileEntity.java index 4e5c1e4750..3ced52bf32 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftTileEntity.java @@ -2,12 +2,14 @@ package com.simibubi.create.content.contraptions.relays.encased; import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; public class EncasedShaftTileEntity extends KineticTileEntity { - public EncasedShaftTileEntity(BlockEntityType type) { - super(type); + public EncasedShaftTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java index 8f16308a91..85c1675417 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java @@ -12,6 +12,9 @@ import com.simibubi.create.content.contraptions.base.KineticTileInstance; import com.simibubi.create.content.contraptions.base.RotatingData; import com.simibubi.create.foundation.utility.Iterate; +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.Block; + public class SplitShaftInstance extends KineticTileInstance { protected final ArrayList keys; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftTileEntity.java index 36a1ea1382..82ba0dfc9a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftTileEntity.java @@ -1,12 +1,14 @@ package com.simibubi.create.content.contraptions.relays.encased; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; public abstract class SplitShaftTileEntity extends DirectionalShaftHalvesTileEntity { - public SplitShaftTileEntity(BlockEntityType typeIn) { - super(typeIn); + public SplitShaftTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { + super(typeIn, pos, state); } public abstract float getRotationSpeedModifier(Direction face); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeInstance.java index 03db6bbbe5..bb2a075835 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeInstance.java @@ -16,7 +16,8 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Iterate; -import net.minecraft.util.math.MathHelper; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; public abstract class GaugeInstance extends ShaftInstance implements IDynamicInstance { @@ -35,11 +36,11 @@ public abstract class GaugeInstance extends ShaftInstance implements IDynamicIns Instancer dialModel = getTransformMaterial().getModel(AllBlockPartials.GAUGE_DIAL, blockState); Instancer headModel = getHeadModel(); - ms = new MatrixStack(); + ms = new PoseStack(); MatrixTransformStack msr = MatrixTransformStack.of(ms); msr.translate(getInstancePosition()); - float progress = MathHelper.lerp(AnimationTickHolder.getPartialTicks(), gaugeTile.prevDialState, gaugeTile.dialState); + float progress = Mth.lerp(AnimationTickHolder.getPartialTicks(), gaugeTile.prevDialState, gaugeTile.dialState); for (Direction facing : Iterate.directions) { if (!gaugeBlock.shouldRenderHeadOnFace(world, pos, blockState, facing)) @@ -61,10 +62,10 @@ public abstract class GaugeInstance extends ShaftInstance implements IDynamicIns public void beginFrame() { GaugeTileEntity gaugeTile = (GaugeTileEntity) tile; - if (MathHelper.equal(gaugeTile.prevDialState, gaugeTile.dialState)) + if (Mth.equal(gaugeTile.prevDialState, gaugeTile.dialState)) return; - float progress = MathHelper.lerp(AnimationTickHolder.getPartialTicks(), gaugeTile.prevDialState, gaugeTile.dialState); + float progress = Mth.lerp(AnimationTickHolder.getPartialTicks(), gaugeTile.prevDialState, gaugeTile.dialState); MatrixTransformStack msr = MatrixTransformStack.of(ms); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeTileEntity.java index d85baf7215..f481f546e0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeTileEntity.java @@ -6,6 +6,7 @@ import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.foundation.utility.Lang; +import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -18,8 +19,8 @@ public class GaugeTileEntity extends KineticTileEntity implements IHaveGoggleInf public float prevDialState; public int color; - public GaugeTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public GaugeTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { + super(typeIn, pos, state); } @Override @@ -30,10 +31,10 @@ public class GaugeTileEntity extends KineticTileEntity implements IHaveGoggleInf } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { dialTarget = compound.getFloat("Value"); color = compound.getInt("Color"); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/SpeedGaugeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/SpeedGaugeTileEntity.java index 23e091aa7b..95dfae818d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/SpeedGaugeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/SpeedGaugeTileEntity.java @@ -10,14 +10,16 @@ import com.simibubi.create.foundation.utility.Color; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; public class SpeedGaugeTileEntity extends GaugeTileEntity { - public SpeedGaugeTileEntity(BlockEntityType type) { - super(type); + public SpeedGaugeTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/StressGaugeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/StressGaugeTileEntity.java index d864981575..95b78174da 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/StressGaugeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/StressGaugeTileEntity.java @@ -9,15 +9,17 @@ import com.simibubi.create.foundation.utility.Color; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.TextComponent; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; public class StressGaugeTileEntity extends GaugeTileEntity { - public StressGaugeTileEntity(BlockEntityType type) { - super(type); + public StressGaugeTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxTileEntity.java index 5a5b3f7d54..d7b1a3ca2a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxTileEntity.java @@ -2,12 +2,14 @@ package com.simibubi.create.content.contraptions.relays.gearbox; import com.simibubi.create.content.contraptions.relays.encased.DirectionalShaftHalvesTileEntity; +import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; public class GearboxTileEntity extends DirectionalShaftHalvesTileEntity { - public GearboxTileEntity(BlockEntityType type) { - super(type); + public GearboxTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearshiftTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearshiftTileEntity.java index fdf30476e9..cb96e271d1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearshiftTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearshiftTileEntity.java @@ -2,14 +2,16 @@ package com.simibubi.create.content.contraptions.relays.gearbox; import com.simibubi.create.content.contraptions.relays.encased.SplitShaftTileEntity; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; public class GearshiftTileEntity extends SplitShaftTileEntity { - public GearshiftTileEntity(BlockEntityType type) { - super(type); + public GearshiftTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchable.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchable.java index 6ede49f342..5d424cb4a6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchable.java +++ b/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchable.java @@ -61,7 +61,7 @@ public interface IWrenchable { if (player != null && !player.isCreative()) Block.getDrops(state, (ServerLevel) world, pos, world.getBlockEntity(pos), player, context.getItemInHand()) .forEach(itemStack -> { - player.inventory.placeItemBackInInventory(world, itemStack); + player.getInventory().placeItemBackInInventory(itemStack); }); state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY); world.destroyBlock(pos, false); diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchableWithBracket.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchableWithBracket.java index 86efbfba01..14bf177e1b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchableWithBracket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchableWithBracket.java @@ -36,7 +36,7 @@ public interface IWrenchableWithBracket extends IWrenchable { if (bracket.isPresent()) { Player player = context.getPlayer(); if (!world.isClientSide && !player.isCreative()) - player.inventory.placeItemBackInInventory(world, bracket.get()); + player.getInventory().placeItemBackInInventory(bracket.get()); if (!world.isClientSide && AllBlocks.FLUID_PIPE.has(blockState)) { Axis preferred = FluidPropagator.getStraightPipeAxis(blockState); Direction preferredDirection = diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItem.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItem.java index 5b0e3ba5fa..ba389a0d72 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItem.java @@ -64,7 +64,7 @@ public class WrenchItem extends Item { return InteractionResult.SUCCESS; if (player != null && !player.isCreative()) Block.getDrops(state, (ServerLevel) world, pos, world.getBlockEntity(pos), player, context.getItemInHand()) - .forEach(itemStack -> player.inventory.placeItemBackInInventory(world, itemStack)); + .forEach(itemStack -> player.getInventory().placeItemBackInInventory(itemStack)); state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY); world.destroyBlock(pos, false); AllSoundEvents.WRENCH_REMOVE.playOnServer(world, pos, 1, Create.RANDOM.nextFloat() * .5f + .5f); diff --git a/src/main/java/com/simibubi/create/content/curiosities/BuildersTeaItem.java b/src/main/java/com/simibubi/create/content/curiosities/BuildersTeaItem.java index 5483fc7069..15b25d3b60 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/BuildersTeaItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/BuildersTeaItem.java @@ -32,15 +32,15 @@ public class BuildersTeaItem extends Item { if (playerentity != null) { playerentity.awardStat(Stats.ITEM_USED.get(this)); playerentity.getFoodData().eat(1, .6F); - if (!playerentity.abilities.instabuild) + if (!playerentity.getAbilities().instabuild) stack.shrink(1); } - if (playerentity == null || !playerentity.abilities.instabuild) { + if (playerentity == null || !playerentity.getAbilities().instabuild) { if (stack.isEmpty()) return new ItemStack(Items.GLASS_BOTTLE); if (playerentity != null) - playerentity.inventory.add(new ItemStack(Items.GLASS_BOTTLE)); + playerentity.getInventory().add(new ItemStack(Items.GLASS_BOTTLE)); } return stack; diff --git a/src/main/java/com/simibubi/create/content/curiosities/ChromaticCompoundItem.java b/src/main/java/com/simibubi/create/content/curiosities/ChromaticCompoundItem.java index b2f6e7cfc4..dc5ef84d70 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/ChromaticCompoundItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/ChromaticCompoundItem.java @@ -82,8 +82,8 @@ public class ChromaticCompoundItem extends Item { CRecipes config = AllConfigs.SERVER.recipes; if (world.isClientSide) { int light = itemData.getInt("CollectingLight"); - if (random.nextInt(config.lightSourceCountForRefinedRadiance.get() + 20) < light) { - Vec3 start = VecHelper.offsetRandomly(positionVec, random, 3); + if (world.random.nextInt(config.lightSourceCountForRefinedRadiance.get() + 20) < light) { + Vec3 start = VecHelper.offsetRandomly(positionVec, world.random, 3); Vec3 motion = positionVec.subtract(start) .normalize() .scale(.2f); @@ -116,7 +116,7 @@ public class ChromaticCompoundItem extends Item { stack.split(1); entity.setItem(stack); if (stack.isEmpty()) - entity.remove(); + entity.discard(); return false; } @@ -142,7 +142,7 @@ public class ChromaticCompoundItem extends Item { BeaconBlockEntity bte = (BeaconBlockEntity) te; - if (bte.getLevels() != 0 && !bte.beamSections.isEmpty()) + if (!bte.beamSections.isEmpty()) isOverBeacon = true; break; @@ -208,17 +208,17 @@ public class ChromaticCompoundItem extends Item { return false; } - public boolean checkLight(ItemStack stack, ItemEntity entity, Level world, CompoundTag itemData, - Vec3 positionVec, BlockPos randomOffset, BlockState state) { - if (state.getLightValue(world, randomOffset) == 0) + public boolean checkLight(ItemStack stack, ItemEntity entity, Level world, CompoundTag itemData, Vec3 positionVec, + BlockPos randomOffset, BlockState state) { + if (state.getLightEmission(world, randomOffset) == 0) return false; if (state.getDestroySpeed(world, randomOffset) == -1) return false; if (state.getBlock() == Blocks.BEACON) return false; - ClipContext context = new ClipContext(positionVec.add(new Vec3(0, 0.5, 0)), - VecHelper.getCenterOf(randomOffset), Block.COLLIDER, Fluid.NONE, entity); + ClipContext context = new ClipContext(positionVec.add(new Vec3(0, 0.5, 0)), VecHelper.getCenterOf(randomOffset), + Block.COLLIDER, Fluid.NONE, entity); if (!randomOffset.equals(world.clip(context) .getBlockPos())) return false; @@ -232,7 +232,7 @@ public class ChromaticCompoundItem extends Item { world.addFreshEntity(newEntity); entity.lifespan = 6000; if (stack.isEmpty()) - entity.remove(); + entity.discard(); return true; } diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java index a94ee2143a..f0be21aeea 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java @@ -8,6 +8,7 @@ import com.simibubi.create.content.contraptions.particle.AirParticleData; import com.simibubi.create.foundation.tileEntity.ComparatorUtil; import com.simibubi.create.foundation.utility.VecHelper; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; @@ -32,8 +33,8 @@ public class CopperBacktankTileEntity extends KineticTileEntity implements Namea private int capacityEnchantLevel; private ListTag enchantmentTag; - public CopperBacktankTileEntity(BlockEntityType typeIn) { - super(typeIn); + public CopperBacktankTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { + super(typeIn, pos, state); enchantmentTag = new ListTag(); } @@ -94,8 +95,8 @@ public class CopperBacktankTileEntity extends KineticTileEntity implements Namea } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); + protected void fromTag(CompoundTag compound, boolean clientPacket) { + super.fromTag(compound, clientPacket); int prev = airLevel; capacityEnchantLevel = compound.getInt("CapacityEnchantment"); airLevel = compound.getInt("Air"); diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java index 7a7c9283da..aec6fd5abc 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java @@ -59,7 +59,7 @@ public class DivingBootsItem extends CopperArmorItem { return false; if (entity instanceof Player) { Player playerEntity = (Player) entity; - if (playerEntity.abilities.flying) + if (playerEntity.getAbilities().flying) return false; } return true; diff --git a/src/main/java/com/simibubi/create/content/curiosities/bell/AbstractBellTileEntity.java b/src/main/java/com/simibubi/create/content/curiosities/bell/AbstractBellTileEntity.java index 5f306e0b1e..9caecfc8d3 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/bell/AbstractBellTileEntity.java +++ b/src/main/java/com/simibubi/create/content/curiosities/bell/AbstractBellTileEntity.java @@ -10,6 +10,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; public abstract class AbstractBellTileEntity extends SmartTileEntity { @@ -19,8 +20,8 @@ public abstract class AbstractBellTileEntity extends SmartTileEntity { public int ringingTicks; public Direction ringDirection; - public AbstractBellTileEntity(BlockEntityType type) { - super(type); + public AbstractBellTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/curiosities/bell/BasicParticleData.java b/src/main/java/com/simibubi/create/content/curiosities/bell/BasicParticleData.java index 7b7d6e5191..c4ea97fb2f 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/bell/BasicParticleData.java +++ b/src/main/java/com/simibubi/create/content/curiosities/bell/BasicParticleData.java @@ -6,6 +6,7 @@ import com.mojang.brigadier.StringReader; import com.mojang.serialization.Codec; import com.simibubi.create.content.contraptions.particle.ICustomParticleDataWithSprite; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.Particle; import net.minecraft.client.particle.ParticleEngine; diff --git a/src/main/java/com/simibubi/create/content/curiosities/bell/HauntedBellTileEntity.java b/src/main/java/com/simibubi/create/content/curiosities/bell/HauntedBellTileEntity.java index 85cc8b86e4..aa96c46a5e 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/bell/HauntedBellTileEntity.java +++ b/src/main/java/com/simibubi/create/content/curiosities/bell/HauntedBellTileEntity.java @@ -25,8 +25,8 @@ public class HauntedBellTileEntity extends AbstractBellTileEntity { public int effectTicks = 0; - public HauntedBellTileEntity(BlockEntityType type) { - super(type); + public HauntedBellTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override @@ -65,8 +65,8 @@ public class HauntedBellTileEntity extends AbstractBellTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); + protected void fromTag(CompoundTag compound, boolean clientPacket) { + super.fromTag(compound, clientPacket); effectTicks = compound.getInt("EffectTicks"); } diff --git a/src/main/java/com/simibubi/create/content/curiosities/bell/PeculiarBellTileEntity.java b/src/main/java/com/simibubi/create/content/curiosities/bell/PeculiarBellTileEntity.java index 25c04e6632..ce837d5141 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/bell/PeculiarBellTileEntity.java +++ b/src/main/java/com/simibubi/create/content/curiosities/bell/PeculiarBellTileEntity.java @@ -3,12 +3,14 @@ package com.simibubi.create.content.curiosities.bell; import com.jozufozu.flywheel.core.PartialModel; import com.simibubi.create.AllBlockPartials; +import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; public class PeculiarBellTileEntity extends AbstractBellTileEntity { - public PeculiarBellTileEntity(BlockEntityType type) { - super(type); + public PeculiarBellTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryHandler.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryHandler.java index 86ff4b4637..beac727f49 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryHandler.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryHandler.java @@ -52,7 +52,7 @@ public class SymmetryHandler { return; Player player = (Player) event.getEntity(); - Inventory inv = player.inventory; + Inventory inv = player.getInventory(); for (int i = 0; i < Inventory.getSelectionSize(); i++) { if (!inv.getItem(i) .isEmpty() @@ -71,7 +71,7 @@ public class SymmetryHandler { return; Player player = event.getPlayer(); - Inventory inv = player.inventory; + Inventory inv = player.getInventory(); for (int i = 0; i < Inventory.getSelectionSize(); i++) { if (!inv.getItem(i) .isEmpty() && AllItems.WAND_OF_SYMMETRY.isIn(inv.getItem(i))) { @@ -87,7 +87,7 @@ public class SymmetryHandler { LocalPlayer player = mc.player; for (int i = 0; i < Inventory.getSelectionSize(); i++) { - ItemStack stackInSlot = player.inventory.getItem(i); + ItemStack stackInSlot = player.getInventory().getItem(i); if (!AllItems.WAND_OF_SYMMETRY.isIn(stackInSlot)) continue; if (!SymmetryWandItem.isEnabled(stackInSlot)) @@ -146,7 +146,7 @@ public class SymmetryHandler { if (tickCounter % 10 == 0) { for (int i = 0; i < Inventory.getSelectionSize(); i++) { - ItemStack stackInSlot = player.inventory.getItem(i); + ItemStack stackInSlot = player.getInventory().getItem(i); if (stackInSlot != null && AllItems.WAND_OF_SYMMETRY.isIn(stackInSlot) && SymmetryWandItem.isEnabled(stackInSlot)) { diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java index 9783aa9f7b..f2f929dabb 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/RadialToolboxMenu.java @@ -243,13 +243,13 @@ public class RadialToolboxMenu extends AbstractSimiScreen { if (state == State.DETACH) { if (selected == UNEQUIP) AllPackets.channel.sendToServer( - new ToolboxEquipPacket(null, selected, Minecraft.getInstance().player.inventory.selected)); + new ToolboxEquipPacket(null, selected, Minecraft.getInstance().player.getInventory().selected)); return; } if (selected == UNEQUIP) AllPackets.channel.sendToServer(new ToolboxEquipPacket(selectedBox.getBlockPos(), selected, - Minecraft.getInstance().player.inventory.selected)); + Minecraft.getInstance().player.getInventory().selected)); if (selected < 0) return; @@ -262,7 +262,7 @@ public class RadialToolboxMenu extends AbstractSimiScreen { return; AllPackets.channel.sendToServer(new ToolboxEquipPacket(selectedBox.getBlockPos(), selected, - Minecraft.getInstance().player.inventory.selected)); + Minecraft.getInstance().player.getInventory().selected)); } @Override diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxBlock.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxBlock.java index 9ca384ed08..bc07528af7 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxBlock.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxBlock.java @@ -1,13 +1,15 @@ package com.simibubi.create.content.curiosities.toolbox; -import static net.minecraft.state.properties.BlockStateProperties.WATERLOGGED; +import static net.minecraft.world.level.block.state.properties.BlockStateProperties.WATERLOGGED; -import javanet.minimport com.simibubi.create.AllBlocks; +import java.util.Optional; + +import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.utility.BlockHelper; -import java.util.Optional; + import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.NonNullList; @@ -31,55 +33,16 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.HorizontalDirectionalBlock; import net.minecraft.world.level.block.SimpleWaterloggedBlock; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockBehaviour.Properties; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.common.util.FakePlayer; -import net.minecraftforge.fml.network.NetworkHooks; - -ecraft.world.level.block.state.properties.BlockStatePropertiesocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.utility.BlockHelper; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.HorizontalBlock; -import net.minecraft.block.IWaterLoggable; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.fluid.FluidState; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.DyeColor; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.NonNullList; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; -import net.minecraftforge.common.util.FakePlayer; -import net.minecraftforge.fml.network.NetworkHooks; +import net.minecraftforge.fmllegacy.network.NetworkHooks; public class ToolboxBlock extends HorizontalDirectionalBlock implements SimpleWaterloggedBlock, ITE { @@ -88,7 +51,7 @@ public class ToolboxBlock extends HorizontalDirectionalBlock implements SimpleWa public ToolboxBlock(Properties properties, DyeColor color) { super(properties); this.color = color; - registerDefaultState(defaultBlockState().setValue(WATERLOGGED, false)); + registerDefaultState(defaultBlockState().setValue(BlockStateProperties.WATERLOGGED, false)); } @Override @@ -141,7 +104,7 @@ public class ToolboxBlock extends HorizontalDirectionalBlock implements SimpleWa ItemStack cloneItemStack = getCloneItemStack(world, pos, state); world.destroyBlock(pos, false); if (world.getBlockState(pos) != state) - player.inventory.placeItemBackInInventory(world, cloneItemStack); + player.getInventory().placeItemBackInInventory(cloneItemStack); } } diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxContainer.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxContainer.java index 33548ea628..8facf481ec 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxContainer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxContainer.java @@ -79,7 +79,7 @@ public class ToolboxContainer extends ContainerBase { if (index >= 0 && index < size) { ItemStack itemInClickedSlot = getSlot(index).getItem(); - Inventory playerInv = player.inventory; + Inventory playerInv = player.getInventory(); ItemStack carried = playerInv.getCarried(); if (type == ClickType.PICKUP && !carried.isEmpty() && !itemInClickedSlot.isEmpty() diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java index 41ac4cf957..dd1b74e911 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java @@ -88,7 +88,7 @@ public class ToolboxHandlerClient { continue; AllPackets.channel.sendToServer( - new ToolboxEquipPacket(toolboxTileEntity.getBlockPos(), comp, player.inventory.selected)); + new ToolboxEquipPacket(toolboxTileEntity.getBlockPos(), comp, player.getInventory().selected)); return true; } @@ -111,7 +111,7 @@ public class ToolboxHandlerClient { CompoundTag compound = player.getPersistentData() .getCompound("CreateToolboxData"); - String slotKey = String.valueOf(player.inventory.selected); + String slotKey = String.valueOf(player.getInventory().selected); boolean equipped = compound.contains(slotKey); if (equipped) { @@ -172,7 +172,7 @@ public class ToolboxHandlerClient { BlockPos pos = NbtUtils.readBlockPos(compound.getCompound(key) .getCompound("Pos")); double max = ToolboxHandler.getMaxRange(player); - boolean selected = player.inventory.selected == slot; + boolean selected = player.getInventory().selected == slot; int offset = selected ? 1 : 0; AllGuiTextures texture = ToolboxHandler.distance(player.position(), pos) < max * max ? selected ? TOOLBELT_SELECTED_ON : TOOLBELT_HOTBAR_ON diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxScreen.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxScreen.java index 2665607db8..4c70043cd3 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxScreen.java @@ -74,7 +74,7 @@ public class ToolboxScreen extends AbstractSimiContainerScreen BG.draw(ms, this, leftPos + 10, topPos); PLAYER.draw(ms, this, leftPos + (BG.width - PLAYER.width) / 2 - 26, topPos + imageHeight - PLAYER.height); font.draw(ms, title, leftPos + 24, topPos + 4, 0x442000); - font.draw(ms, inventory.getDisplayName(), leftPos - 13, topPos + 154, 0x404040); + font.draw(ms, playerInventoryTitle, leftPos - 13, topPos + 154, 0x404040); renderToolbox(ms, mouseX, mouseY, partialTicks); @@ -95,7 +95,7 @@ public class ToolboxScreen extends AbstractSimiContainerScreen setBlitOffset(100); itemRenderer.blitOffset = 100.0F; RenderSystem.enableDepthTest(); - itemRenderer.renderAndDecorateItem(minecraft.player, itemstack, i, j); + itemRenderer.renderAndDecorateItem(minecraft.player, itemstack, i, j, 0); itemRenderer.renderGuiItemDecorations(font, itemstack, i, j, s); setBlitOffset(0); itemRenderer.blitOffset = 0.0F; diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxTileEntity.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxTileEntity.java index f0dc8b5507..cd1cdc961d 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxTileEntity.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxTileEntity.java @@ -17,6 +17,7 @@ import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.foundation.utility.animation.LerpedFloat; import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; @@ -57,8 +58,8 @@ public class ToolboxTileEntity extends SmartTileEntity implements MenuProvider, private Component customName; - public ToolboxTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public ToolboxTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); connectedPlayers = new HashMap<>(); inventory = new ToolboxInventory(this); inventoryProvider = LazyOptional.of(() -> inventory); @@ -128,7 +129,8 @@ public class ToolboxTileEntity extends SmartTileEntity implements MenuProvider, if (!clear && !ToolboxHandler.withinRange(player, this)) continue; - ItemStack playerStack = player.inventory.getItem(hotbarSlot); + Inventory playerInv = player.getInventory(); + ItemStack playerStack = playerInv.getItem(hotbarSlot); if (clear || !playerStack.isEmpty() && !ToolboxInventory.canItemsShareCompartment(playerStack, referenceItem)) { @@ -160,7 +162,7 @@ public class ToolboxTileEntity extends SmartTileEntity implements MenuProvider, if (!extracted.isEmpty()) { update = true; ItemStack template = playerStack.isEmpty() ? extracted : playerStack; - player.inventory.setItem(hotbarSlot, + playerInv.setItem(hotbarSlot, ItemHandlerHelper.copyStackWithSize(template, count + extracted.getCount())); } } @@ -183,7 +185,7 @@ public class ToolboxTileEntity extends SmartTileEntity implements MenuProvider, .getCount(); if (deposited > 0) { update = true; - player.inventory.setItem(hotbarSlot, + playerInv.setItem(hotbarSlot, ItemHandlerHelper.copyStackWithSize(playerStack, count - deposited)); } } @@ -242,12 +244,13 @@ public class ToolboxTileEntity extends SmartTileEntity implements MenuProvider, if (keepItems) return; - ItemStack playerStack = player.inventory.getItem(hotbarSlot); + Inventory playerInv = player.getInventory(); + ItemStack playerStack = playerInv.getItem(hotbarSlot); ItemStack toInsert = ToolboxInventory.cleanItemNBT(playerStack.copy()); ItemStack remainder = inventory.distributeToCompartment(toInsert, slot, false); if (remainder.getCount() != toInsert.getCount()) - player.inventory.setItem(hotbarSlot, remainder); + playerInv.setItem(hotbarSlot, remainder); } private void tickAudio() { @@ -277,9 +280,9 @@ public class ToolboxTileEntity extends SmartTileEntity implements MenuProvider, } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { inventory.deserializeNBT(compound.getCompound("Inventory")); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); if (compound.contains("CustomName", 8)) this.customName = Component.Serializer.fromJson(compound.getString("CustomName")); if (clientPacket) @@ -318,8 +321,7 @@ public class ToolboxTileEntity extends SmartTileEntity implements MenuProvider, int prevOpenCount = openCount; openCount = 0; - for (Player playerentity : level.getEntitiesOfClass(Player.class, - new AABB(worldPosition).inflate(8))) + for (Player playerentity : level.getEntitiesOfClass(Player.class, new AABB(worldPosition).inflate(8))) if (playerentity.containerMenu instanceof ToolboxContainer && ((ToolboxContainer) playerentity.containerMenu).contentHolder == this) openCount++; diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintEntity.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintEntity.java index 6ecf52fb3f..6994f85585 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintEntity.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintEntity.java @@ -29,6 +29,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.protocol.Packet; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; @@ -125,17 +126,17 @@ public class BlueprintEntity extends HangingEntity this.verticalOrientation = verticalOrientation; if (facing.getAxis() .isHorizontal()) { - this.xRot = 0.0F; - this.yRot = (float) (this.direction.get2DDataValue() * 90); + setXRot(0.0F); + setYRot(this.direction.get2DDataValue() * 90); } else { - this.xRot = (float) (-90 * facing.getAxisDirection() + setXRot(-90 * facing.getAxisDirection() .getStep()); - this.yRot = verticalOrientation.getAxis() - .isHorizontal() ? 180 + verticalOrientation.toYRot() : 0; + setYRot(verticalOrientation.getAxis() + .isHorizontal() ? 180 + verticalOrientation.toYRot() : 0); } - this.xRotO = this.xRot; - this.yRotO = this.yRot; + this.xRotO = getXRot(); + this.yRotO = getYRot(); this.recalculateBoundingBox(); } @@ -284,9 +285,8 @@ public class BlueprintEntity extends HangingEntity playSound(SoundEvents.PAINTING_BREAK, 1.0F, 1.0F); if (p_110128_1_ instanceof Player) { Player playerentity = (Player) p_110128_1_; - if (playerentity.abilities.instabuild) { + if (playerentity.getAbilities().instabuild) return; - } } spawnAtLocation(AllItems.CRAFTING_BLUEPRINT.asStack()); @@ -308,15 +308,14 @@ public class BlueprintEntity extends HangingEntity } @Override - public void moveTo(double p_70012_1_, double p_70012_3_, double p_70012_5_, float p_70012_7_, - float p_70012_8_) { + public void moveTo(double p_70012_1_, double p_70012_3_, double p_70012_5_, float p_70012_7_, float p_70012_8_) { this.setPos(p_70012_1_, p_70012_3_, p_70012_5_); } @Override @OnlyIn(Dist.CLIENT) - public void lerpTo(double p_180426_1_, double p_180426_3_, double p_180426_5_, - float p_180426_7_, float p_180426_8_, int p_180426_9_, boolean p_180426_10_) { + public void lerpTo(double p_180426_1_, double p_180426_3_, double p_180426_5_, float p_180426_7_, float p_180426_8_, + int p_180426_9_, boolean p_180426_10_) { BlockPos blockpos = this.pos.offset(p_180426_1_ - this.getX(), p_180426_3_ - this.getY(), p_180426_5_ - this.getZ()); this.setPos((double) blockpos.getX(), (double) blockpos.getY(), (double) blockpos.getZ()); @@ -348,7 +347,7 @@ public class BlueprintEntity extends HangingEntity if (!holdingWrench && !level.isClientSide && !items.getStackInSlot(9) .isEmpty()) { - IItemHandlerModifiable playerInv = new InvWrapper(player.inventory); + IItemHandlerModifiable playerInv = new InvWrapper(player.getInventory()); boolean firstPass = true; int amountCrafted = 0; ForgeHooks.setCraftingPlayer(player); @@ -405,11 +404,13 @@ public class BlueprintEntity extends HangingEntity .getRemainingItemsFor(RecipeType.CRAFTING, craftingInventory, level); if (firstPass) - level.playSound(null, player.blockPosition(), SoundEvents.ITEM_PICKUP, - SoundSource.PLAYERS, .2f, 1f + Create.RANDOM.nextFloat()); - player.inventory.placeItemBackInInventory(level, result); + level.playSound(null, player.blockPosition(), SoundEvents.ITEM_PICKUP, SoundSource.PLAYERS, + .2f, 1f + Create.RANDOM.nextFloat()); + player.getInventory() + .placeItemBackInInventory(result); for (ItemStack itemStack : nonnulllist) - player.inventory.placeItemBackInInventory(level, itemStack); + player.getInventory() + .placeItemBackInInventory(itemStack); firstPass = false; } } @@ -439,8 +440,8 @@ public class BlueprintEntity extends HangingEntity public BlueprintSection getSectionAt(Vec3 vec) { int index = 0; if (size > 1) { - vec = VecHelper.rotate(vec, yRot, Axis.Y); - vec = VecHelper.rotate(vec, -xRot, Axis.X); + vec = VecHelper.rotate(vec, getYRot(), Axis.Y); + vec = VecHelper.rotate(vec, -getXRot(), Axis.X); vec = vec.add(0.5, 0.5, 0); if (size == 3) vec = vec.add(1, 1, 0); diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java index 710279dfab..335a2f4b90 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java @@ -104,9 +104,9 @@ public class BlueprintOverlayRenderer { boolean firstPass = true; boolean success = true; Minecraft mc = Minecraft.getInstance(); - ItemStackHandler playerInv = new ItemStackHandler(mc.player.inventory.getContainerSize()); + ItemStackHandler playerInv = new ItemStackHandler(mc.player.getInventory().getContainerSize()); for (int i = 0; i < playerInv.getSlots(); i++) - playerInv.setStackInSlot(i, mc.player.inventory.getItem(i) + playerInv.setStackInSlot(i, mc.player.getInventory().getItem(i) .copy()); int amountCrafted = 0; diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintRenderer.java index a7af4e69b4..f34ea59410 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintRenderer.java @@ -14,7 +14,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.Sheets; import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; -import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.texture.OverlayTexture; @@ -52,10 +51,10 @@ public class BlueprintRenderer extends EntityRenderer { float fakeNormalXRotation = -15; int bl = light >> 4 & 0xf; int sl = light >> 20 & 0xf; - boolean vertical = entity.xRot != 0; - if (entity.xRot == -90) + boolean vertical = entity.getXRot() != 0; + if (entity.getXRot() == -90) fakeNormalXRotation = -45; - else if (entity.xRot == 90 || yaw % 180 != 0) { + else if (entity.getXRot() == 90 || yaw % 180 != 0) { bl /= 1.35; sl /= 1.35; } @@ -73,7 +72,7 @@ public class BlueprintRenderer extends EntityRenderer { MatrixTransformStack.of(ms) .rotateY(-yaw) - .rotateX(entity.xRot) + .rotateX(entity.getXRot()) .translate(0, 0, 1 / 32f + .001); if (entity.size == 3) diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintScreen.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintScreen.java index 8bd499a7b7..f8b6315739 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintScreen.java @@ -80,7 +80,7 @@ public class BlueprintScreen extends AbstractSimiContainerScreen { + ProjectileUtil.getEntityHitResult(player, Vector3d, Vector3d2, AABB, (e) -> { return !e.isSpectator() && e.isPickable(); }, d0 * d0); if (entityraytraceresult != null) { diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperItem.java b/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperItem.java index f1cf1fcdc0..3a98b84999 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperItem.java @@ -4,6 +4,7 @@ import javax.annotation.ParametersAreNonnullByDefault; import com.simibubi.create.foundation.utility.VecHelper; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.particles.ItemParticleOption; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; @@ -142,7 +143,7 @@ public class SandPaperItem extends Item { if (player instanceof FakePlayer) { player.drop(polished, false, false); } else { - player.inventory.placeItemBackInInventory(worldIn, polished); + player.getInventory().placeItemBackInInventory(worldIn, polished); } } tag.remove("Polishing"); @@ -168,7 +169,7 @@ public class SandPaperItem extends Item { CompoundTag tag = stack.getOrCreateTag(); if (tag.contains("Polishing")) { ItemStack toPolish = ItemStack.of(tag.getCompound("Polishing")); - player.inventory.placeItemBackInInventory(worldIn, toPolish); + player.getInventory().placeItemBackInInventory(worldIn, toPolish); tag.remove("Polishing"); } } diff --git a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java index 4d04ef4e3c..6aae75b8db 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java @@ -173,7 +173,7 @@ public class PotatoCannonItem extends ProjectileWeaponItem { if (!player.isCreative()) { itemStack.shrink(1); if (itemStack.isEmpty()) - player.inventory.removeItem(itemStack); + player.getInventory().removeItem(itemStack); } if (!BackTankUtil.canAbsorbDamage(player, maxUses())) diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/ShootableGadgetItemMethods.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/ShootableGadgetItemMethods.java index 5e8bc87117..c672d2a5bd 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/ShootableGadgetItemMethods.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/ShootableGadgetItemMethods.java @@ -59,8 +59,8 @@ public class ShootableGadgetItemMethods { public static Vec3 getGunBarrelVec(Player player, boolean mainHand, Vec3 rightHandForward) { Vec3 start = player.position() .add(0, player.getEyeHeight(), 0); - float yaw = (float) ((player.yRot) / -180 * Math.PI); - float pitch = (float) ((player.xRot) / -180 * Math.PI); + float yaw = (float) ((player.getYRot()) / -180 * Math.PI); + float pitch = (float) ((player.getXRot()) / -180 * Math.PI); int flip = mainHand == (player.getMainArm() == HumanoidArm.RIGHT) ? -1 : 1; Vec3 barrelPosNoTransform = new Vec3(flip * rightHandForward.x, rightHandForward.y, rightHandForward.z); Vec3 barrelPos = start.add(barrelPosNoTransform.xRot(pitch) diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItemRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItemRenderer.java index cc450e32b7..35393bcb2f 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItemRenderer.java @@ -1,7 +1,6 @@ package com.simibubi.create.content.curiosities.zapper.terrainzapper; import static java.lang.Math.max; -import static net.minecraft.util.math.MathHelper.clamp; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Vector3f; @@ -42,7 +41,7 @@ public class WorldshaperItemRenderer extends ZapperItemRenderer cap = LazyOptional.empty(); protected List> flapsToSend; - public BeltTunnelTileEntity(BlockEntityType type) { - super(type); + public BeltTunnelTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); flaps = new EnumMap<>(Direction.class); sides = new HashSet<>(); flapsToSend = new LinkedList<>(); @@ -77,7 +78,7 @@ public class BeltTunnelTileEntity extends SmartTileEntity implements IInstanceRe } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { Set newFlaps = new HashSet<>(6); ListTag flapsNBT = compound.getList("Flaps", NBT.TAG_INT); for (Tag inbt : flapsNBT) @@ -101,7 +102,7 @@ public class BeltTunnelTileEntity extends SmartTileEntity implements IInstanceRe // Backwards compat if (!compound.contains("Sides") && compound.contains("Flaps")) sides.addAll(flaps.keySet()); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); if (clientPacket) DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> InstancedRenderDispatcher.enqueueUpdate(this)); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelBlock.java index 1375f8ec6b..ab4b489c73 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelBlock.java @@ -43,7 +43,7 @@ public class BrassTunnelBlock extends BeltTunnelBlock { if (world.isClientSide) return InteractionResult.SUCCESS; for (ItemStack itemStack : stacksOfGroup) - player.inventory.placeItemBackInInventory(world, itemStack.copy()); + player.getInventory().placeItemBackInInventory(itemStack.copy()); world.playSound(null, pos, SoundEvents.ITEM_PICKUP, SoundSource.PLAYERS, .2f, 1f + Create.RANDOM.nextFloat()); return InteractionResult.SUCCESS; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java index 3a0ece29e3..0fa82a86e6 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java @@ -77,8 +77,8 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave private LazyOptional beltCapability; private LazyOptional tunnelCapability; - public BrassTunnelTileEntity(BlockEntityType type) { - super(type); + public BrassTunnelTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); distributionTargets = Couple.create(ArrayList::new); syncSet = new HashSet<>(); stackToDistribute = ItemStack.EMPTY; @@ -581,7 +581,7 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { boolean wasConnectedLeft = connectedLeft; boolean wasConnectedRight = connectedRight; @@ -603,7 +603,7 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave })); } - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); if (!clientPacket) return; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/AbstractChuteBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/AbstractChuteBlock.java index 20a0e1d1b6..46abb99923 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/chute/AbstractChuteBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/AbstractChuteBlock.java @@ -96,7 +96,7 @@ public abstract class AbstractChuteBlock extends Block implements IWrenchable, I ItemStack remainder = input.handleInsertion(toInsert, Direction.UP, false); if (remainder.isEmpty()) - itemEntity.remove(); + itemEntity.discard(); if (remainder.getCount() < toInsert.getCount()) itemEntity.setItem(remainder); } @@ -208,7 +208,7 @@ public abstract class AbstractChuteBlock extends Block implements IWrenchable, I return onTileEntityUse(world, pos, te -> { if (te.item.isEmpty()) return InteractionResult.PASS; - player.inventory.placeItemBackInInventory(world, te.item); + player.getInventory().placeItemBackInInventory(te.item); te.setItem(ItemStack.EMPTY); return InteractionResult.SUCCESS; }); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java index 677992144e..27f40e4dcb 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java @@ -31,6 +31,7 @@ import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.ChatFormatting; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ItemParticleOption; @@ -83,8 +84,8 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor LazyOptional capAbove; LazyOptional capBelow; - public ChuteTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public ChuteTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); item = ItemStack.EMPTY; itemPosition = new InterpolatedValue(); itemHandler = new ChuteItemHandler(this); @@ -231,7 +232,7 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor continue; setItem(entityItem.copy(), (float) (itemEntity.getBoundingBox() .getCenter().y - worldPosition.getY())); - itemEntity.remove(); + itemEntity.discard(); AllTriggers.triggerForNearbyPlayers(AllTriggers.UPWARD_CHUTE, level, worldPosition, 5); break; } @@ -519,14 +520,14 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { ItemStack previousItem = item; item = ItemStack.of(compound.getCompound("Item")); itemPosition.lastValue = itemPosition.value = compound.getFloat("ItemPosition"); pull = compound.getFloat("Pull"); push = compound.getFloat("Push"); bottomPullDistance = compound.getFloat("BottomAirFlowDistance"); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); // if (clientPacket) // airCurrent.rebuild(); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/SmartChuteTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/SmartChuteTileEntity.java index 8529759a3a..610577a490 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/chute/SmartChuteTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/SmartChuteTileEntity.java @@ -16,8 +16,8 @@ public class SmartChuteTileEntity extends ChuteTileEntity { FilteringBehaviour filtering; - public SmartChuteTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public SmartChuteTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java index 5ac98a8ad3..c6db3cc435 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java @@ -7,6 +7,7 @@ import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.foundation.block.ITE; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java index 2c95dfc6ba..308237dec1 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java @@ -5,8 +5,10 @@ import java.util.List; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.CapabilityItemHandler; @@ -15,8 +17,8 @@ public class DepotTileEntity extends SmartTileEntity { DepotBehaviour depotBehaviour; - public DepotTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public DepotTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorInstance.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorInstance.java index ad244388d0..d548a236bb 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorInstance.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorInstance.java @@ -4,7 +4,7 @@ import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.jozufozu.flywheel.util.transform.MatrixTransformStack; -import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; import com.simibubi.create.foundation.utility.AnimationTickHolder; @@ -61,7 +61,7 @@ public class EjectorInstance extends ShaftInstance implements IDynamicInstance { private void pivotPlate(float lidProgress) { float angle = lidProgress * 70; - MatrixStack ms = new MatrixStack(); + PoseStack ms = new PoseStack(); EjectorRenderer.applyLidAngle(tile, angle, MatrixTransformStack.of(ms).translate(getInstancePosition())); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java index 27ad791a06..70d460e88d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java @@ -85,12 +85,12 @@ public class EjectorTileEntity extends KineticTileEntity { CHARGED, LAUNCHING, RETRACTING; } - public EjectorTileEntity(BlockEntityType typeIn) { - super(typeIn); + public EjectorTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { + super(typeIn, pos, state); launcher = new EntityLauncher(1, 0); lidProgress = LerpedFloat.linear() .startWithValue(1); - state = State.RETRACTING; + this.state = State.RETRACTING; launchedItems = new ArrayList<>(); powered = false; } @@ -164,8 +164,8 @@ public class EjectorTileEntity extends KineticTileEntity { .getItem() instanceof ElytraItem)) continue; - playerEntity.yRot = facing.toYRot(); - playerEntity.xRot = -35; + playerEntity.setXRot(-35); + playerEntity.setYRot(facing.toYRot()); playerEntity.setDeltaMovement(playerEntity.getDeltaMovement() .scale(.75f)); deployElytra(playerEntity); @@ -469,7 +469,7 @@ public class EjectorTileEntity extends KineticTileEntity { if (hd == 0 && vd == 0) distanceFactor = 1; else - distanceFactor = 1 * Mth.sqrt(Math.pow(hd, 2) + Math.pow(vd, 2)); + distanceFactor = 1 * Mth.sqrt(hd * hd + vd * vd); return speedFactor / distanceFactor; } @@ -499,8 +499,8 @@ public class EjectorTileEntity extends KineticTileEntity { } @Override - protected void fromTag(BlockState blockState, CompoundTag compound, boolean clientPacket) { - super.fromTag(blockState, compound, clientPacket); + protected void fromTag(CompoundTag compound, boolean clientPacket) { + super.fromTag(compound, clientPacket); int horizontalDistance = compound.getInt("HorizontalDistance"); int verticalDistance = compound.getInt("VerticalDistance"); @@ -576,12 +576,6 @@ public class EjectorTileEntity extends KineticTileEntity { return INFINITE_EXTENT_AABB; } - @Override - @OnlyIn(Dist.CLIENT) - public double getViewDistance() { - return super.getViewDistance() * 16; - } - private static abstract class EntityHack extends Entity { public EntityHack(EntityType p_i48580_1_, Level p_i48580_2_) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/SharedDepotBlockMethods.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/SharedDepotBlockMethods.java index 9d05831cec..4d05cd9e3d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/SharedDepotBlockMethods.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/SharedDepotBlockMethods.java @@ -50,14 +50,14 @@ public class SharedDepotBlockMethods { ItemStack mainItemStack = behaviour.getHeldItemStack(); if (!mainItemStack.isEmpty()) { - player.inventory.placeItemBackInInventory(world, mainItemStack); + player.getInventory().placeItemBackInInventory(mainItemStack); behaviour.removeHeldItem(); world.playSound(null, pos, SoundEvents.ITEM_PICKUP, SoundSource.PLAYERS, .2f, 1f + Create.RANDOM.nextFloat()); } ItemStackHandler outputs = behaviour.processingOutputBuffer; for (int i = 0; i < outputs.getSlots(); i++) - player.inventory.placeItemBackInInventory(world, outputs.extractItem(i, 64, false)); + player.getInventory().placeItemBackInInventory(outputs.extractItem(i, 64, false)); if (!wasEmptyHanded && !shouldntPlaceItem) { TransportedItemStack transported = new TransportedItemStack(heldItem); @@ -105,7 +105,7 @@ public class SharedDepotBlockMethods { ItemStack remainder = inputBehaviour.handleInsertion(itemEntity.getItem(), Direction.DOWN, false); itemEntity.setItem(remainder); if (remainder.isEmpty()) - itemEntity.remove(); + itemEntity.discard(); } public static int getComparatorInputOverride(BlockState blockState, Level worldIn, BlockPos pos) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/diodes/AdjustablePulseRepeaterTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/diodes/AdjustablePulseRepeaterTileEntity.java index 26c66320a8..8f9a020c8d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/diodes/AdjustablePulseRepeaterTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/diodes/AdjustablePulseRepeaterTileEntity.java @@ -2,12 +2,14 @@ package com.simibubi.create.content.logistics.block.diodes; import static com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterBlock.POWERING; +import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; public class AdjustablePulseRepeaterTileEntity extends AdjustableRepeaterTileEntity { - public AdjustablePulseRepeaterTileEntity(BlockEntityType type) { - super(type); + public AdjustablePulseRepeaterTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/diodes/AdjustableRepeaterTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/diodes/AdjustableRepeaterTileEntity.java index fb57bbb86a..39077097ca 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/diodes/AdjustableRepeaterTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/diodes/AdjustableRepeaterTileEntity.java @@ -1,7 +1,6 @@ package com.simibubi.create.content.logistics.block.diodes; import static com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterBlock.POWERING; -import static net.minecraft.block.RedstoneDiodeBlock.POWERED; import java.util.List; @@ -12,9 +11,11 @@ import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollVal import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueBehaviour.StepContext; import com.simibubi.create.foundation.utility.Lang; +import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; +import net.minecraft.world.level.block.DiodeBlock; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -24,14 +25,14 @@ public class AdjustableRepeaterTileEntity extends SmartTileEntity implements IIn public boolean charging; ScrollValueBehaviour maxState; - public AdjustableRepeaterTileEntity(BlockEntityType type) { - super(type); + public AdjustableRepeaterTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override public void addBehaviours(List behaviours) { maxState = new ScrollValueBehaviour(Lang.translate("generic.delay"), this, new AdjustableRepeaterScrollSlot()) - .between(1, 60 * 20 * 30); + .between(1, 60 * 20 * 30); maxState.withStepFunction(this::step); maxState.withFormatter(this::format); maxState.withUnit(this::getUnit); @@ -46,10 +47,10 @@ public class AdjustableRepeaterTileEntity extends SmartTileEntity implements IIn } @Override - protected void fromTag(BlockState blockState, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { state = compound.getInt("State"); charging = compound.getBoolean("Charging"); - super.fromTag(blockState, compound, clientPacket); + super.fromTag(compound, clientPacket); } @Override @@ -90,7 +91,7 @@ public class AdjustableRepeaterTileEntity extends SmartTileEntity implements IIn @Override public void tick() { super.tick(); - boolean powered = getBlockState().getValue(POWERED); + boolean powered = getBlockState().getValue(DiodeBlock.POWERED); boolean powering = getBlockState().getValue(POWERING); boolean atMax = state >= maxState.getValue(); boolean atMin = state <= 0; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java index 0e0200b572..18b7aeb85f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java @@ -118,7 +118,7 @@ public abstract class FunnelBlock extends AbstractDirectionalFunnelBlock { ItemStack remainder = tryInsert(worldIn, pos, toInsert, false); if (remainder.isEmpty()) - itemEntity.remove(); + itemEntity.discard(); if (remainder.getCount() < toInsert.getCount()) itemEntity.setItem(remainder); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java index 678c9f0c5d..d4963284d3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java @@ -24,6 +24,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InvManipula import com.simibubi.create.foundation.utility.BlockFace; import com.simibubi.create.foundation.utility.VecHelper; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.item.ItemEntity; @@ -50,8 +51,8 @@ public class FunnelTileEntity extends SmartTileEntity implements IHaveHoveringIn INVALID, PAUSED, COLLECT, PUSHING_TO_BELT, TAKING_FROM_BELT, EXTRACT } - public FunnelTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public FunnelTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); extractionCooldown = 0; flap = new InterpolatedChasingValue().start(.25f) .target(0) @@ -322,19 +323,14 @@ public class FunnelTileEntity extends SmartTileEntity implements IHaveHoveringIn } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); + protected void fromTag(CompoundTag compound, boolean clientPacket) { + super.fromTag(compound, clientPacket); extractionCooldown = compound.getInt("TransferCooldown"); if (clientPacket) DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> InstancedRenderDispatcher.enqueueUpdate(this)); } - @Override - public double getViewDistance() { - return hasFlap() ? super.getViewDistance() : 64; - } - public void onTransfer(ItemStack stack) { AllBlocks.CONTENT_OBSERVER.get() .onFunnelTransfer(level, worldPosition, stack); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/inventories/AdjustableCrateTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/inventories/AdjustableCrateTileEntity.java index 204574b6a5..63fafec02b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/inventories/AdjustableCrateTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/inventories/AdjustableCrateTileEntity.java @@ -3,6 +3,7 @@ package com.simibubi.create.content.logistics.block.inventories; import com.simibubi.create.AllBlocks; import com.simibubi.create.foundation.utility.Lang; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; @@ -61,8 +62,8 @@ public class AdjustableCrateTileEntity extends CrateTileEntity implements MenuPr public int itemCount; protected LazyOptional invHandler; - public AdjustableCrateTileEntity(BlockEntityType type) { - super(type); + public AdjustableCrateTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); allowedAmount = 512; itemCount = 10; inventory = new Inv(); @@ -150,10 +151,10 @@ public class AdjustableCrateTileEntity extends CrateTileEntity implements MenuPr } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { allowedAmount = compound.getInt("AllowedAmount"); inventory.deserializeNBT(compound.getCompound("Inventory")); - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/inventories/BottomlessItemHandler.java b/src/main/java/com/simibubi/create/content/logistics/block/inventories/BottomlessItemHandler.java index b524728cf8..1df0af6a2e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/inventories/BottomlessItemHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/inventories/BottomlessItemHandler.java @@ -4,6 +4,7 @@ import java.util.function.Supplier; import javax.annotation.ParametersAreNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.world.item.ItemStack; import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemStackHandler; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/inventories/CrateTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/inventories/CrateTileEntity.java index 85c3e44230..4f8164d3fd 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/inventories/CrateTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/inventories/CrateTileEntity.java @@ -5,14 +5,16 @@ import java.util.List; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.AxisDirection; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; public abstract class CrateTileEntity extends SmartTileEntity { - public CrateTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public CrateTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/inventories/CreativeCrateTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/inventories/CreativeCrateTileEntity.java index 98ab2c48c1..4d157ceb9a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/inventories/CreativeCrateTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/inventories/CreativeCrateTileEntity.java @@ -9,6 +9,7 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; @@ -22,8 +23,8 @@ import net.minecraftforge.items.IItemHandler; public class CreativeCrateTileEntity extends CrateTileEntity { - public CreativeCrateTileEntity(BlockEntityType type) { - super(type); + public CreativeCrateTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); inv = new BottomlessItemHandler(filtering::getFilter); itemHandler = LazyOptional.of(() -> inv); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java index 950b3cd53f..04b4039026 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java @@ -104,7 +104,7 @@ public class ArmBlock extends KineticBlock implements ITE, ICogWh success.setTrue(); if (world.isClientSide) return; - player.inventory.placeItemBackInInventory(world, te.heldItem); + player.getInventory().placeItemBackInInventory(te.heldItem); te.heldItem = ItemStack.EMPTY; te.phase = Phase.SEARCH_INPUTS; te.setChanged(); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInstance.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInstance.java index d333e8bd1c..6eacffe63d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInstance.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInstance.java @@ -10,7 +10,7 @@ import com.jozufozu.flywheel.backend.material.Material; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.jozufozu.flywheel.util.transform.MatrixTransformStack; -import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.RotatingData; import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; @@ -20,7 +20,7 @@ import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.entity.ItemRenderer; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.Mth; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; @@ -82,10 +82,10 @@ public class ArmInstance extends SingleRotatingInstance implements IDynamicInsta float upperArmAngleNow = this.arm.upperArmAngle.get(pt); float headAngleNow = this.arm.headAngle.get(pt); - boolean settled = MathHelper.equal(baseAngle, baseAngleNow) - && MathHelper.equal(lowerArmAngle, lowerArmAngleNow) - && MathHelper.equal(upperArmAngle, upperArmAngleNow) - && MathHelper.equal(headAngle, headAngleNow); + boolean settled = Mth.equal(baseAngle, baseAngleNow) + && Mth.equal(lowerArmAngle, lowerArmAngleNow) + && Mth.equal(upperArmAngle, upperArmAngleNow) + && Mth.equal(headAngle, headAngleNow); this.baseAngle = baseAngleNow; this.lowerArmAngle = lowerArmAngleNow; @@ -109,8 +109,8 @@ public class ArmInstance extends SingleRotatingInstance implements IDynamicInsta if (rave) { float renderTick = AnimationTickHolder.getRenderTime(this.arm.getLevel()) + (tile.hashCode() % 64); baseAngle = (renderTick * 10) % 360; - lowerArmAngle = MathHelper.lerp((MathHelper.sin(renderTick / 4) + 1) / 2, -45, 15); - upperArmAngle = MathHelper.lerp((MathHelper.sin(renderTick / 8) + 1) / 4, -45, 95); + lowerArmAngle = Mth.lerp((Mth.sin(renderTick / 4) + 1) / 2, -45, 15); + upperArmAngle = Mth.lerp((Mth.sin(renderTick / 8) + 1) / 4, -45, 95); headAngle = -lowerArmAngle; color = Color.rainbowColor(AnimationTickHolder.getTicks() * 100).getRGB(); } else { @@ -121,7 +121,7 @@ public class ArmInstance extends SingleRotatingInstance implements IDynamicInsta color = 0xFFFFFF; } - MatrixStack msLocal = new MatrixStack(); + PoseStack msLocal = new PoseStack(); MatrixTransformStack msr = MatrixTransformStack.of(msLocal); msr.translate(getInstancePosition()); msr.centre(); @@ -151,7 +151,7 @@ public class ArmInstance extends SingleRotatingInstance implements IDynamicInsta .getItemRenderer(); boolean hasItem = !item.isEmpty(); boolean isBlockItem = hasItem && (item.getItem() instanceof BlockItem) - && itemRenderer.getModel(item, Minecraft.getInstance().level, null) + && itemRenderer.getModel(item, Minecraft.getInstance().level, null, 0) .isGui3d(); for (int index : Iterate.zeroAndOne) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java index 600867bb50..b5766740e1 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java @@ -25,6 +25,7 @@ import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.VecHelper; +import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; @@ -76,8 +77,8 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE SEARCH_INPUTS, MOVE_TO_INPUT, SEARCH_OUTPUTS, MOVE_TO_OUTPUT, DANCING } - public ArmTileEntity(BlockEntityType typeIn) { - super(typeIn); + public ArmTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { + super(typeIn, pos, state); inputs = new ArrayList<>(); outputs = new ArrayList<>(); interactionPointTag = new ListTag(); @@ -467,12 +468,12 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { int previousIndex = chasedPointIndex; Phase previousPhase = phase; ListTag interactionPointTagBefore = interactionPointTag; - super.fromTag(state, compound, clientPacket); + super.fromTag(compound, clientPacket); heldItem = ItemStack.of(compound.getCompound("HeldItem")); phase = NBTHelper.readEnum(compound, "Phase", Phase.class); chasedPointIndex = compound.getInt("TargetPointIndex"); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverInstance.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverInstance.java index 2745548887..3be20c99ad 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverInstance.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverInstance.java @@ -6,12 +6,13 @@ import com.jozufozu.flywheel.backend.material.Material; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.jozufozu.flywheel.util.transform.MatrixTransformStack; -import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.Color; +import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.properties.AttachFace; public class AnalogLeverInstance extends TileEntityInstance implements IDynamicInstance { @@ -44,7 +45,7 @@ public class AnalogLeverInstance extends TileEntityInstance type) { - super(type); + public AnalogLeverTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override @@ -33,11 +34,11 @@ public class AnalogLeverTileEntity extends SmartTileEntity implements IHaveGoggl } @Override - protected void fromTag(BlockState blockState, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { state = compound.getInt("State"); lastChange = compound.getInt("ChangeTimer"); clientState.target(state); - super.fromTag(blockState, compound, clientPacket); + super.fromTag(compound, clientPacket); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/ContentObserverTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/ContentObserverTileEntity.java index 4522beafc8..ade5b556e2 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/ContentObserverTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/ContentObserverTileEntity.java @@ -29,8 +29,8 @@ public class ContentObserverTileEntity extends SmartTileEntity { private TankManipulationBehaviour observedTank; public int turnOffTicks = 0; - public ContentObserverTileEntity(BlockEntityType type) { - super(type); + public ContentObserverTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); setLazyTickRate(20); } @@ -129,8 +129,8 @@ public class ContentObserverTileEntity extends SmartTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); + protected void fromTag(CompoundTag compound, boolean clientPacket) { + super.fromTag(compound, clientPacket); turnOffTicks = compound.getInt("TurnOff"); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeTileEntity.java index d63ba1d4b0..28f440c056 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeTileEntity.java @@ -14,6 +14,7 @@ import com.simibubi.create.foundation.utility.Couple; import net.minecraft.commands.CommandSource; import net.minecraft.commands.CommandSourceStack; +import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.ComponentUtils; @@ -38,8 +39,8 @@ public class NixieTubeTileEntity extends SmartTileEntity { private Component parsedCustomText; private Couple displayedStrings; - public NixieTubeTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public NixieTubeTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); hasCustomText = false; redstoneStrength = 0; } @@ -113,8 +114,8 @@ public class NixieTubeTileEntity extends SmartTileEntity { // @Override - protected void fromTag(BlockState state, CompoundTag nbt, boolean clientPacket) { - super.fromTag(state, nbt, clientPacket); + protected void fromTag(CompoundTag nbt, boolean clientPacket) { + super.fromTag(nbt, clientPacket); if (nbt.contains("RawCustomText", NBT.TAG_STRING)) { rawCustomText = getJsonFromString(nbt.getString("RawCustomText")); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneContactBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneContactBlock.java index 87fc82b46b..bb17964e98 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneContactBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneContactBlock.java @@ -8,6 +8,7 @@ import javax.annotation.ParametersAreNonnullByDefault; import com.simibubi.create.AllBlocks; import com.simibubi.create.foundation.block.WrenchableDirectionalBlock; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneLinkTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneLinkTileEntity.java index c106a023a2..ba3a2e5a81 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneLinkTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneLinkTileEntity.java @@ -1,21 +1,8 @@ package com.simibubi.create.content.logistics.block.redstone; -import static net.minecraft.state.properties.BlockStateProperties.POWERED; - -import javanet.minimport com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; -import com.simibubi.create.foundation.tileEntity.behaviour.linked.LinkBehaviour; import java.util.List; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; -import org.apache.commons.lang3.tuple.Pair; -ecraft.world.level.block.state.properties.BlockStatePropertiese.Pair; +import org.apache.commons.lang3.tuple.Pair; import com.simibubi.create.AllBlocks; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; @@ -23,11 +10,11 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.tileEntity.behaviour.linked.LinkBehaviour; -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; public class RedstoneLinkTileEntity extends SmartTileEntity { @@ -37,13 +24,12 @@ public class RedstoneLinkTileEntity extends SmartTileEntity { private LinkBehaviour link; private boolean transmitter; - public RedstoneLinkTileEntity(BlockEntityType type) { - super(type); + public RedstoneLinkTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override - public void addBehaviours(List behaviours) { - } + public void addBehaviours(List behaviours) {} @Override public void addBehavioursDeferred(List behaviours) { @@ -55,7 +41,7 @@ public class RedstoneLinkTileEntity extends SmartTileEntity { Pair slots = ValueBoxTransform.Dual.makeSlots(RedstoneLinkFrequencySlot::new); link = transmitter ? LinkBehaviour.transmitter(this, slots, this::getSignal) - : LinkBehaviour.receiver(this, slots, this::setSignal); + : LinkBehaviour.receiver(this, slots, this::setSignal); } public int getSignal() { @@ -84,10 +70,10 @@ public class RedstoneLinkTileEntity extends SmartTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { transmitter = compound.getBoolean("Transmitter"); - super.fromTag(state, compound, clientPacket); - + super.fromTag(compound, clientPacket); + receivedSignal = compound.getInt("Receive"); receivedSignalChanged = compound.getBoolean("ReceivedChanged"); if (level == null || level.isClientSide || !link.newPosition) @@ -111,21 +97,24 @@ public class RedstoneLinkTileEntity extends SmartTileEntity { return; if (level.isClientSide) return; - + BlockState blockState = getBlockState(); if (!AllBlocks.REDSTONE_LINK.has(blockState)) return; - if ((getReceivedSignal() > 0) != blockState.getValue(POWERED)) { + if ((getReceivedSignal() > 0) != blockState.getValue(RedstoneLinkBlock.POWERED)) { receivedSignalChanged = true; - level.setBlockAndUpdate(worldPosition, blockState.cycle(POWERED)); + level.setBlockAndUpdate(worldPosition, blockState.cycle(RedstoneLinkBlock.POWERED)); } - + if (receivedSignalChanged) { - Direction attachedFace = blockState.getValue(RedstoneLinkBlock.FACING).getOpposite(); + Direction attachedFace = blockState.getValue(RedstoneLinkBlock.FACING) + .getOpposite(); BlockPos attachedPos = worldPosition.relative(attachedFace); - level.blockUpdated(worldPosition, level.getBlockState(worldPosition).getBlock()); - level.blockUpdated(attachedPos, level.getBlockState(attachedPos).getBlock()); + level.blockUpdated(worldPosition, level.getBlockState(worldPosition) + .getBlock()); + level.blockUpdated(attachedPos, level.getBlockState(attachedPos) + .getBlock()); receivedSignalChanged = false; } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchTileEntity.java index 792a5f3ccb..13ab3aab01 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchTileEntity.java @@ -9,6 +9,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.inventory.CapManipula import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InvManipulationBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.inventory.TankManipulationBehaviour; +import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; @@ -27,7 +28,7 @@ public class StockpileSwitchTileEntity extends SmartTileEntity { public float onWhenAbove; public float offWhenBelow; public float currentLevel; - private boolean state; + private boolean redstoneState; private boolean inverted; private boolean poweredAfterDelay; @@ -35,26 +36,26 @@ public class StockpileSwitchTileEntity extends SmartTileEntity { private InvManipulationBehaviour observedInventory; private TankManipulationBehaviour observedTank; - public StockpileSwitchTileEntity(BlockEntityType typeIn) { - super(typeIn); + public StockpileSwitchTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); onWhenAbove = .75f; offWhenBelow = .25f; currentLevel = -1; - state = false; + redstoneState = false; inverted = false; poweredAfterDelay = false; setLazyTickRate(10); } @Override - protected void fromTag(BlockState blockState, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { onWhenAbove = compound.getFloat("OnAbove"); offWhenBelow = compound.getFloat("OffBelow"); currentLevel = compound.getFloat("Current"); - state = compound.getBoolean("Powered"); + redstoneState = compound.getBoolean("Powered"); inverted = compound.getBoolean("Inverted"); poweredAfterDelay = compound.getBoolean("PoweredAfterDelay"); - super.fromTag(blockState, compound, clientPacket); + super.fromTag(compound, clientPacket); } @Override @@ -62,7 +63,7 @@ public class StockpileSwitchTileEntity extends SmartTileEntity { compound.putFloat("OnAbove", onWhenAbove); compound.putFloat("OffBelow", offWhenBelow); compound.putFloat("Current", currentLevel); - compound.putBoolean("Powered", state); + compound.putBoolean("Powered", redstoneState); compound.putBoolean("Inverted", inverted); compound.putBoolean("PoweredAfterDelay", poweredAfterDelay); super.write(compound, clientPacket); @@ -116,7 +117,7 @@ public class StockpileSwitchTileEntity extends SmartTileEntity { return; level.setBlock(worldPosition, getBlockState().setValue(StockpileSwitchBlock.INDICATOR, 0), 3); currentLevel = -1; - state = false; + redstoneState = false; sendData(); scheduleBlockTick(); return; @@ -129,12 +130,12 @@ public class StockpileSwitchTileEntity extends SmartTileEntity { currentLevel = stockLevel; currentLevel = Mth.clamp(currentLevel, 0, 1); - boolean previouslyPowered = state; - if (state && currentLevel <= offWhenBelow) - state = false; - else if (!state && currentLevel >= onWhenAbove) - state = true; - boolean update = previouslyPowered != state; + boolean previouslyPowered = redstoneState; + if (redstoneState && currentLevel <= offWhenBelow) + redstoneState = false; + else if (!redstoneState && currentLevel >= onWhenAbove) + redstoneState = true; + boolean update = previouslyPowered != redstoneState; int displayLevel = 0; if (currentLevel > 0) @@ -180,11 +181,11 @@ public class StockpileSwitchTileEntity extends SmartTileEntity { } public boolean getState() { - return state; + return redstoneState; } public boolean shouldBePowered() { - return inverted != state; + return inverted != redstoneState; } public void updatePowerAfterDelay() { diff --git a/src/main/java/com/simibubi/create/content/logistics/item/CardboardBoxItem.java b/src/main/java/com/simibubi/create/content/logistics/item/CardboardBoxItem.java index 041a50e88c..ae9d195954 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/CardboardBoxItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/CardboardBoxItem.java @@ -41,7 +41,7 @@ public class CardboardBoxItem extends Item { ItemStack box = playerIn.getItemInHand(handIn); for (ItemStack stack : getContents(box)) - playerIn.inventory.placeItemBackInInventory(worldIn, stack); + playerIn.getInventory().placeItemBackInInventory(worldIn, stack); if (!playerIn.isCreative()) { box.shrink(1); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/LecternControllerTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/item/LecternControllerTileEntity.java index cc3b95f3e5..150a406ed5 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/LecternControllerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/LecternControllerTileEntity.java @@ -33,8 +33,8 @@ public class LecternControllerTileEntity extends SmartTileEntity { private UUID prevUser; // used only on client private boolean deactivatedThisTick; // used only on server - public LecternControllerTileEntity(BlockEntityType type) { - super(type); + public LecternControllerTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); } @Override @@ -55,8 +55,8 @@ public class LecternControllerTileEntity extends SmartTileEntity { } @Override - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); + protected void fromTag(CompoundTag compound, boolean clientPacket) { + super.fromTag(compound, clientPacket); controller = ItemStack.of(compound.getCompound("Controller")); user = compound.hasUUID("User") ? compound.getUUID("User") : null; } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerScreen.java b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerScreen.java index 67bd4082a9..fa451ffba8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerScreen.java @@ -102,7 +102,7 @@ public class LinkedControllerScreen extends AbstractSimiContainerScreen(); this.tileEntities = new HashMap<>(); - this.bounds = new BoundingBox(); + this.bounds = new BoundingBox(BlockPos.ZERO); this.anchor = anchor; this.entities = new ArrayList<>(); this.renderedTileEntities = new ArrayList<>(); @@ -94,7 +94,7 @@ public class SchematicWorld extends WrappedWorld implements ServerLevelAccessor return null; BlockState blockState = getBlockState(pos); - if (blockState.hasTileEntity()) { + if (blockState.hasBlockEntity()) { try { BlockEntity tileEntity = blockState.createTileEntity(this); if (tileEntity != null) { @@ -118,7 +118,7 @@ public class SchematicWorld extends WrappedWorld implements ServerLevelAccessor public BlockState getBlockState(BlockPos globalPos) { BlockPos pos = globalPos.subtract(anchor); - if (pos.getY() - bounds.y0 == -1 && !renderMode) + if (pos.getY() - bounds.minY() == -1 && !renderMode) return Blocks.GRASS_BLOCK.defaultBlockState(); if (getBounds().isInside(pos) && blocks.containsKey(pos)) return processBlockStateForPrinting(blocks.get(pos)); @@ -154,7 +154,7 @@ public class SchematicWorld extends WrappedWorld implements ServerLevelAccessor Predicate arg2) { return Collections.emptyList(); } - + @Override public List players() { return Collections.emptyList(); @@ -184,12 +184,12 @@ public class SchematicWorld extends WrappedWorld implements ServerLevelAccessor public boolean setBlock(BlockPos pos, BlockState arg1, int arg2) { pos = pos.immutable() .subtract(anchor); - bounds.expand(new BoundingBox(pos, pos)); + bounds.encapsulate(BoundingBox.fromCorners(pos, pos)); blocks.put(pos, arg1); if (tileEntities.containsKey(pos)) { BlockEntity tileEntity = tileEntities.get(pos); if (!tileEntity.getType() - .isValid(arg1.getBlock())) { + .isValid(arg1)) { tileEntities.remove(pos); renderedTileEntities.remove(tileEntity); } @@ -203,7 +203,7 @@ public class SchematicWorld extends WrappedWorld implements ServerLevelAccessor } @Override - public void sendBlockUpdated(BlockPos pos, BlockState oldState, BlockState newState, int flags) { } + public void sendBlockUpdated(BlockPos pos, BlockState oldState, BlockState newState, int flags) {} @Override public TickList getBlockTicks() { diff --git a/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableContainer.java b/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableContainer.java index f423b31f6b..39c1e45892 100644 --- a/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableContainer.java +++ b/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableContainer.java @@ -67,12 +67,12 @@ public class SchematicTableContainer extends AbstractContainerMenu { // player Slots for (int row = 0; row < 3; ++row) { for (int col = 0; col < 9; ++col) { - this.addSlot(new Slot(player.inventory, col + row * 9 + 9, 38 + col * 18, 105 + row * 18)); + this.addSlot(new Slot(player.getInventory(), col + row * 9 + 9, 38 + col * 18, 105 + row * 18)); } } for (int hotbarSlot = 0; hotbarSlot < 9; ++hotbarSlot) { - this.addSlot(new Slot(player.inventory, hotbarSlot, 38 + hotbarSlot * 18, 163)); + this.addSlot(new Slot(player.getInventory(), hotbarSlot, 38 + hotbarSlot * 18, 163)); } broadcastChanges(); diff --git a/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableTileEntity.java b/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableTileEntity.java index f8e6c12e9f..dd129065b9 100644 --- a/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableTileEntity.java +++ b/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableTileEntity.java @@ -1,9 +1,13 @@ package com.simibubi.create.content.schematics.block; +import java.util.List; + import com.simibubi.create.foundation.gui.IInteractionChecker; -import com.simibubi.create.foundation.tileEntity.SyncedTileEntity; +import com.simibubi.create.foundation.tileEntity.SmartTileEntity; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.Lang; +import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; @@ -13,11 +17,10 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.entity.TickableBlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.items.ItemStackHandler; -public class SchematicTableTileEntity extends SyncedTileEntity implements TickableBlockEntity, MenuProvider, IInteractionChecker { +public class SchematicTableTileEntity extends SmartTileEntity implements MenuProvider, IInteractionChecker { public SchematicTableInventory inventory; public boolean isUploading; @@ -37,8 +40,8 @@ public class SchematicTableTileEntity extends SyncedTileEntity implements Tickab } } - public SchematicTableTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public SchematicTableTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); inventory = new SchematicTableInventory(); uploadingSchematic = null; uploadingProgress = 0; @@ -50,14 +53,12 @@ public class SchematicTableTileEntity extends SyncedTileEntity implements Tickab } @Override - public void load(BlockState state, CompoundTag compound) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { inventory.deserializeNBT(compound.getCompound("Inventory")); - readClientUpdate(state, compound); - super.load(state, compound); - } - - @Override - public void readClientUpdate(BlockState state, CompoundTag compound) { + super.fromTag(compound, clientPacket); + + if (!clientPacket) + return; if (compound.contains("Uploading")) { isUploading = true; uploadingSchematic = compound.getString("Schematic"); @@ -70,22 +71,17 @@ public class SchematicTableTileEntity extends SyncedTileEntity implements Tickab } @Override - public CompoundTag save(CompoundTag compound) { + protected void write(CompoundTag compound, boolean clientPacket) { compound.put("Inventory", inventory.serializeNBT()); - writeToClient(compound); - return super.save(compound); - } - - @Override - public CompoundTag writeToClient(CompoundTag compound) { - if (isUploading) { + super.write(compound, clientPacket); + + if (clientPacket && isUploading) { compound.putBoolean("Uploading", true); compound.putString("Schematic", uploadingSchematic); compound.putFloat("Progress", uploadingProgress); } - return compound; } - + @Override public void tick() { // Update Client Tile @@ -94,7 +90,7 @@ public class SchematicTableTileEntity extends SyncedTileEntity implements Tickab level.sendBlockUpdated(worldPosition, getBlockState(), getBlockState(), 6); } } - + public void startUpload(String schematic) { isUploading = true; uploadingProgress = 0; @@ -102,7 +98,7 @@ public class SchematicTableTileEntity extends SyncedTileEntity implements Tickab sendUpdate = true; inventory.setStackInSlot(0, ItemStack.EMPTY); } - + public void finishUpload() { isUploading = false; uploadingProgress = 0; @@ -125,7 +121,11 @@ public class SchematicTableTileEntity extends SyncedTileEntity implements Tickab if (level == null || level.getBlockEntity(worldPosition) != this) { return false; } - return player.distanceToSqr(worldPosition.getX() + 0.5D, worldPosition.getY() + 0.5D, worldPosition.getZ() + 0.5D) <= 64.0D; + return player.distanceToSqr(worldPosition.getX() + 0.5D, worldPosition.getY() + 0.5D, + worldPosition.getZ() + 0.5D) <= 64.0D; } + @Override + public void addBehaviours(List behaviours) {} + } diff --git a/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonContainer.java b/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonContainer.java index 1dc94f6b69..a5f8dc9a65 100644 --- a/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonContainer.java +++ b/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonContainer.java @@ -58,9 +58,9 @@ public class SchematicannonContainer extends AbstractContainerMenu { // player Slots for (int row = 0; row < 3; ++row) for (int col = 0; col < 9; ++col) - addSlot(new Slot(player.inventory, col + row * 9 + 9, invX + col * 18, invY + row * 18)); + addSlot(new Slot(player.getInventory(), col + row * 9 + 9, invX + col * 18, invY + row * 18)); for (int hotbarSlot = 0; hotbarSlot < 9; ++hotbarSlot) - addSlot(new Slot(player.inventory, hotbarSlot, invX + hotbarSlot * 18, invY + 58)); + addSlot(new Slot(player.getInventory(), hotbarSlot, invX + hotbarSlot * 18, invY + 58)); broadcastChanges(); } diff --git a/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonInstance.java b/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonInstance.java index 7c1485b384..c0c3928dc7 100644 --- a/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonInstance.java +++ b/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonInstance.java @@ -6,10 +6,12 @@ import com.jozufozu.flywheel.backend.material.Material; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.jozufozu.flywheel.util.transform.MatrixTransformStack; -import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.foundation.utility.AnimationTickHolder; +import net.minecraft.core.Direction; + public class SchematicannonInstance extends TileEntityInstance implements IDynamicInstance { private final ModelData connector; @@ -37,7 +39,7 @@ public class SchematicannonInstance extends TileEntityInstance { - public SchematicannonRenderer(BlockEntityRendererProvider.Context context) { - } + public SchematicannonRenderer(BlockEntityRendererProvider.Context context) {} @Override public boolean shouldRenderOffScreen(SchematicannonTileEntity p_188185_1_) { @@ -39,13 +38,15 @@ public class SchematicannonRenderer extends SafeTileEntityRenderer launched.totalTicks - 10) @@ -124,30 +128,38 @@ public class SchematicannonRenderer extends SafeTileEntityRenderer { private static final AllGuiTextures BG_BOTTOM = AllGuiTextures.SCHEMATICANNON_BOTTOM; @@ -104,8 +76,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen(); } @@ -139,9 +110,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen tip = button.getToolTip(); - tip.add((enabled ? optionEnabled : optionDisabled).plainCopy().withStyle(BLUE)); - tip.addAll(TooltipHelper.cutTextComponent(Lang.translate("gui.schematicannon.option." + tooltipKey + ".description"), - GRAY, GRAY)); + tip.add((enabled ? optionEnabled : optionDisabled).plainCopy() + .withStyle(BLUE)); + tip.addAll(TooltipHelper + .cutTextComponent(Lang.translate("gui.schematicannon.option." + tooltipKey + ".description"), GRAY, GRAY)); } @Override @@ -293,8 +263,8 @@ public class SchematicannonScreen extends AbstractSimiContainerScreenat(x + BG_TOP.width, y + BG_TOP.height + BG_BOTTOM.height - 48, -200) + GuiGameElement.of(renderedItem).at(x + BG_TOP.width, y + BG_TOP.height + BG_BOTTOM.height - 48, -200) .scale(5) .render(ms); @@ -305,8 +275,8 @@ public class SchematicannonScreen extends AbstractSimiContainerScreenat(x + 128, y + 49, 100) + GuiGameElement.of(te.missingItem).at(x + 128, y + 49, 100) .scale(1) .render(ms); } @@ -322,8 +292,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen tileEntityTypeIn) { - super(tileEntityTypeIn); + public SchematicannonTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); setLazyTickRate(30); attachedInventories = new LinkedHashSet<>(); flyingBlocks = new LinkedList<>(); inventory = new SchematicannonInventory(this); statusMsg = "idle"; - state = State.STOPPED; + this.state = State.STOPPED; replaceMode = 2; checklist = new MaterialChecklist(); printer = new SchematicPrinter(); @@ -159,7 +151,7 @@ public class SchematicannonTileEntity extends SmartTileEntity implements MenuPro } @Override - protected void fromTag(BlockState blockState, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { if (!clientPacket) { inventory.deserializeNBT(compound.getCompound("Inventory")); } @@ -189,7 +181,7 @@ public class SchematicannonTileEntity extends SmartTileEntity implements MenuPro if (compound.contains("FlyingBlocks")) readFlyingBlocks(compound); - super.fromTag(blockState, compound, clientPacket); + super.fromTag(compound, clientPacket); } protected void readFlyingBlocks(CompoundTag compound) { @@ -466,7 +458,8 @@ public class SchematicannonTileEntity extends SmartTileEntity implements MenuPro return; } - if (!printer.getAnchor().closerThan(getBlockPos(), MAX_ANCHOR_DISTANCE)) { + if (!printer.getAnchor() + .closerThan(getBlockPos(), MAX_ANCHOR_DISTANCE)) { state = State.STOPPED; statusMsg = "targetOutsideRange"; printer.resetSchematic(); @@ -575,30 +568,28 @@ public class SchematicannonTileEntity extends SmartTileEntity implements MenuPro blocksToPlace = 0; } - protected boolean shouldPlace(BlockPos pos, BlockState state, BlockEntity te, - BlockState toReplace, BlockState toReplaceOther, boolean isNormalCube) { + protected boolean shouldPlace(BlockPos pos, BlockState state, BlockEntity te, BlockState toReplace, + BlockState toReplaceOther, boolean isNormalCube) { if (pos.closerThan(getBlockPos(), 2f)) return false; if (!replaceTileEntities - && (toReplace.hasTileEntity() || (toReplaceOther != null && toReplaceOther.hasTileEntity()))) + && (toReplace.hasBlockEntity() || (toReplaceOther != null && toReplaceOther.hasBlockEntity()))) return false; if (shouldIgnoreBlockState(state, te)) return false; - boolean placingAir = state.getBlock().isAir(state, level, pos); + boolean placingAir = state.isAir(); if (replaceMode == 3) return true; if (replaceMode == 2 && !placingAir) return true; - if (replaceMode == 1 - && (isNormalCube || (!toReplace.isRedstoneConductor(level, pos) - && (toReplaceOther == null || !toReplaceOther.isRedstoneConductor(level, pos)))) - && !placingAir) + if (replaceMode == 1 && (isNormalCube || (!toReplace.isRedstoneConductor(level, pos) + && (toReplaceOther == null || !toReplaceOther.isRedstoneConductor(level, pos)))) && !placingAir) return true; if (replaceMode == 0 && !toReplace.isRedstoneConductor(level, pos) - && (toReplaceOther == null || !toReplaceOther.isRedstoneConductor(level, pos)) && !placingAir) + && (toReplaceOther == null || !toReplaceOther.isRedstoneConductor(level, pos)) && !placingAir) return true; return false; @@ -617,9 +608,10 @@ public class SchematicannonTileEntity extends SmartTileEntity implements MenuPro // Block doesnt need to be placed twice (Doors, beds, double plants) if (state.hasProperty(BlockStateProperties.DOUBLE_BLOCK_HALF) - && state.getValue(BlockStateProperties.DOUBLE_BLOCK_HALF) == DoubleBlockHalf.UPPER) + && state.getValue(BlockStateProperties.DOUBLE_BLOCK_HALF) == DoubleBlockHalf.UPPER) return true; - if (state.hasProperty(BlockStateProperties.BED_PART) && state.getValue(BlockStateProperties.BED_PART) == BedPart.HEAD) + if (state.hasProperty(BlockStateProperties.BED_PART) + && state.getValue(BlockStateProperties.BED_PART) == BedPart.HEAD) return true; if (state.getBlock() instanceof PistonHeadBlock) return true; @@ -686,7 +678,8 @@ public class SchematicannonTileEntity extends SmartTileEntity implements MenuPro dontUpdateChecklist = true; inventory.extractItem(BookInput, 1, false); ItemStack stack = checklist.createItem(); - stack.setCount(inventory.getStackInSlot(BookOutput).getCount() + 1); + stack.setCount(inventory.getStackInSlot(BookOutput) + .getCount() + 1); inventory.setStackInSlot(BookOutput, stack); sendUpdate = true; return; @@ -706,22 +699,22 @@ public class SchematicannonTileEntity extends SmartTileEntity implements MenuPro boolean end = blockState.getValue(BeltBlock.PART) == BeltPart.END; switch (slope) { - case DOWNWARD: - isLastSegment = start; - break; - case UPWARD: - isLastSegment = end; - break; - case HORIZONTAL: - case VERTICAL: - default: - isLastSegment = positive && end || !positive && start; + case DOWNWARD: + isLastSegment = start; + break; + case UPWARD: + isLastSegment = end; + break; + case HORIZONTAL: + case VERTICAL: + default: + isLastSegment = positive && end || !positive && start; } if (!isLastSegment) blockState = (blockState.getValue(BeltBlock.PART) == BeltPart.MIDDLE) ? Blocks.AIR.defaultBlockState() - : AllBlocks.SHAFT.getDefaultState() + : AllBlocks.SHAFT.getDefaultState() .setValue(AbstractShaftBlock.AXIS, facing.getClockWise() - .getAxis()); + .getAxis()); return blockState; } @@ -756,7 +749,7 @@ public class SchematicannonTileEntity extends SmartTileEntity implements MenuPro } protected void launchBlock(BlockPos target, ItemStack stack, BlockState state, @Nullable CompoundTag data) { - if (!state.getBlock().isAir(state, level, target)) + if (!state.isAir()) blocksPlaced++; flyingBlocks.add(new LaunchedItem.ForBlockState(this.getBlockPos(), target, stack, state, data)); playFiringSound(); @@ -828,5 +821,4 @@ public class SchematicannonTileEntity extends SmartTileEntity implements MenuPro return true; } - } diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java index 33fe7f7818..3049b73dd8 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java @@ -252,16 +252,16 @@ public class SchematicHandler { return null; activeSchematicItem = stack; - activeHotbarSlot = player.inventory.selected; + activeHotbarSlot = player.getInventory().selected; return stack; } private boolean itemLost(Player player) { for (int i = 0; i < Inventory.getSelectionSize(); i++) { - if (!player.inventory.getItem(i) + if (!player.getInventory().getItem(i) .sameItem(activeSchematicItem)) continue; - if (!ItemStack.tagMatches(player.inventory.getItem(i), activeSchematicItem)) + if (!ItemStack.tagMatches(player.getInventory().getItem(i), activeSchematicItem)) continue; return false; } diff --git a/src/main/java/com/simibubi/create/events/ClientEvents.java b/src/main/java/com/simibubi/create/events/ClientEvents.java index bb4558c42a..220faa5e69 100644 --- a/src/main/java/com/simibubi/create/events/ClientEvents.java +++ b/src/main/java/com/simibubi/create/events/ClientEvents.java @@ -60,6 +60,7 @@ import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource.BufferSource; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.BlockItem; @@ -281,10 +282,13 @@ public class ClientEvents { @SubscribeEvent public static void getFogDensity(EntityViewRenderEvent.FogDensity event) { Camera info = event.getInfo(); - FluidState fluidState = info.getFluidInCamera(); - if (fluidState.isEmpty()) - return; - Fluid fluid = fluidState.getType(); + Level level = Minecraft.getInstance().level; + BlockPos blockPos = info.getBlockPosition(); + FluidState fluidstate = level.getFluidState(blockPos); + if (info.getPosition().y > blockPos.getY() + fluidstate.getHeight(level, blockPos)) + return; + + Fluid fluid = fluidstate.getType(); if (fluid.isSame(AllFluids.CHOCOLATE.get())) { event.setDensity(5f); @@ -309,10 +313,13 @@ public class ClientEvents { @SubscribeEvent public static void getFogColor(EntityViewRenderEvent.FogColors event) { Camera info = event.getInfo(); - FluidState fluidState = info.getFluidInCamera(); - if (fluidState.isEmpty()) - return; - Fluid fluid = fluidState.getType(); + Level level = Minecraft.getInstance().level; + BlockPos blockPos = info.getBlockPosition(); + FluidState fluidstate = level.getFluidState(blockPos); + if (info.getPosition().y > blockPos.getY() + fluidstate.getHeight(level, blockPos)) + return; + + Fluid fluid = fluidstate.getType(); if (fluid.isSame(AllFluids.CHOCOLATE.get())) { event.setRed(98 / 256f); diff --git a/src/main/java/com/simibubi/create/foundation/advancement/CriterionTriggerBase.java b/src/main/java/com/simibubi/create/foundation/advancement/CriterionTriggerBase.java index 985f8aa174..63cdaa4df3 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/CriterionTriggerBase.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/CriterionTriggerBase.java @@ -13,6 +13,7 @@ import javax.annotation.ParametersAreNonnullByDefault; import com.google.common.collect.Maps; import com.simibubi.create.Create; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.advancements.CriterionTrigger; import net.minecraft.advancements.critereon.AbstractCriterionTriggerInstance; import net.minecraft.advancements.critereon.EntityPredicate; diff --git a/src/main/java/com/simibubi/create/foundation/advancement/EnumTrigger.java b/src/main/java/com/simibubi/create/foundation/advancement/EnumTrigger.java index e461e001df..b848de1260 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/EnumTrigger.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/EnumTrigger.java @@ -3,6 +3,8 @@ package com.simibubi.create.foundation.advancement; import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; + @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class EnumTrigger> extends StringSerializableTrigger { diff --git a/src/main/java/com/simibubi/create/foundation/advancement/RegistryTrigger.java b/src/main/java/com/simibubi/create/foundation/advancement/RegistryTrigger.java index 99da5dd2db..669d7dbc87 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/RegistryTrigger.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/RegistryTrigger.java @@ -3,6 +3,7 @@ package com.simibubi.create.foundation.advancement; import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.registries.IForgeRegistry; import net.minecraftforge.registries.IForgeRegistryEntry; diff --git a/src/main/java/com/simibubi/create/foundation/advancement/SimpleTrigger.java b/src/main/java/com/simibubi/create/foundation/advancement/SimpleTrigger.java index 6e68eb1f7b..7d48e03e11 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/SimpleTrigger.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/SimpleTrigger.java @@ -8,6 +8,7 @@ import javax.annotation.ParametersAreNonnullByDefault; import com.google.gson.JsonObject; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.advancements.critereon.DeserializationContext; import net.minecraft.advancements.critereon.EntityPredicate; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/simibubi/create/foundation/advancement/StringSerializableTrigger.java b/src/main/java/com/simibubi/create/foundation/advancement/StringSerializableTrigger.java index dd1a137883..070445d834 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/StringSerializableTrigger.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/StringSerializableTrigger.java @@ -16,6 +16,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonSyntaxException; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.advancements.critereon.DeserializationContext; import net.minecraft.advancements.critereon.EntityPredicate; import net.minecraft.advancements.critereon.SerializationContext; diff --git a/src/main/java/com/simibubi/create/foundation/collision/OrientedBB.java b/src/main/java/com/simibubi/create/foundation/collision/OrientedBB.java index ab5ca4a409..d94f8f163d 100644 --- a/src/main/java/com/simibubi/create/foundation/collision/OrientedBB.java +++ b/src/main/java/com/simibubi/create/foundation/collision/OrientedBB.java @@ -64,7 +64,7 @@ public class OrientedBB { setCenter(getCenter().add(offset)); } - public AABB getAsAxisAlignedBB() { + public AABB getAsAABB() { return new AABB(0, 0, 0, 0, 0, 0).move(center) .inflate(extents.x, extents.y, extents.z); } diff --git a/src/main/java/com/simibubi/create/foundation/command/CloneCommand.java b/src/main/java/com/simibubi/create/foundation/command/CloneCommand.java index b3ff54e02d..506af7678d 100644 --- a/src/main/java/com/simibubi/create/foundation/command/CloneCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/CloneCommand.java @@ -59,9 +59,9 @@ public class CloneCommand { private static int doClone(CommandSourceStack source, BlockPos begin, BlockPos end, BlockPos destination, boolean cloneBlocks) throws CommandSyntaxException { - BoundingBox sourceArea = new BoundingBox(begin, end); + BoundingBox sourceArea = BoundingBox.fromCorners(begin, end); BlockPos destinationEnd = destination.offset(sourceArea.getLength()); - BoundingBox destinationArea = new BoundingBox(destination, destinationEnd); + BoundingBox destinationArea = BoundingBox.fromCorners(destination, destinationEnd); int i = sourceArea.getXSpan() * sourceArea.getYSpan() * sourceArea.getZSpan(); if (i > 32768) diff --git a/src/main/java/com/simibubi/create/foundation/command/FlySpeedCommand.java b/src/main/java/com/simibubi/create/foundation/command/FlySpeedCommand.java index 59dcb18540..5deaffcf10 100644 --- a/src/main/java/com/simibubi/create/foundation/command/FlySpeedCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/FlySpeedCommand.java @@ -34,7 +34,7 @@ public class FlySpeedCommand { } private static int sendFlySpeedUpdate(CommandContext ctx, ServerPlayer player, float speed) { - ClientboundPlayerAbilitiesPacket packet = new ClientboundPlayerAbilitiesPacket(player.abilities); + ClientboundPlayerAbilitiesPacket packet = new ClientboundPlayerAbilitiesPacket(player.getAbilities()); // packet.setFlySpeed(speed); ObfuscationReflectionHelper.setPrivateValue(ClientboundPlayerAbilitiesPacket.class, packet, speed, "field_149116_e"); // flyingSpeed player.connection.send(packet); diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigModListScreen.java b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigModListScreen.java index b3254987d4..da0f46eeef 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigModListScreen.java +++ b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigModListScreen.java @@ -44,7 +44,7 @@ public class ConfigModListScreen extends ConfigScreen { list = new ConfigScreenList(minecraft, listWidth, height - 60, 15, height - 45, 40); list.setLeftPos(this.width / 2 - list.getWidth() / 2); - children.add(list); + children().add(list); allEntries = new ArrayList<>(); ModList.get().getMods().stream().map(ModInfo::getModId).forEach(id -> allEntries.add(new ModEntry(id, this))); diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/SubMenuConfigScreen.java b/src/main/java/com/simibubi/create/foundation/config/ui/SubMenuConfigScreen.java index 5bb687a879..2a901d510f 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ui/SubMenuConfigScreen.java +++ b/src/main/java/com/simibubi/create/foundation/config/ui/SubMenuConfigScreen.java @@ -249,7 +249,7 @@ public class SubMenuConfigScreen extends ConfigScreen { list = new ConfigScreenList(minecraft, listWidth, height - 80, 35, height - 45, 40); list.setLeftPos(this.width / 2 - list.getWidth() / 2); - children.add(list); + children().add(list); search = new ConfigTextField(font, width / 2 - listWidth / 2, height - 35, listWidth, 20); search.setResponder(this::updateFilter); diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java index b1d4b684c7..6caf7b54c6 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java @@ -35,6 +35,7 @@ import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.BlockPos; import net.minecraft.tags.BlockTags; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; @@ -44,6 +45,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour.Properties; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Fluid; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -57,6 +59,16 @@ import net.minecraftforge.registries.IForgeRegistryEntry; public class CreateRegistrate extends AbstractRegistrate { + public interface BlockEntityFactory { + + public T create(BlockEntityType type, BlockPos pos, BlockState state); + + default T createWithReversedParams(BlockPos pos, BlockState state, BlockEntityType type) { + return create(type, pos, state); + } + + } + protected CreateRegistrate(String modid) { super(modid); } @@ -117,15 +129,14 @@ public class CreateRegistrate extends AbstractRegistrate { } public CreateTileEntityBuilder tileEntity(String name, - NonNullFunction, ? extends T> factory) { + BlockEntityFactory factory) { return this.tileEntity(this.self(), name, factory); } - @Override public CreateTileEntityBuilder tileEntity(P parent, String name, - NonNullFunction, ? extends T> factory) { + BlockEntityFactory factory) { return (CreateTileEntityBuilder) this.entry(name, (callback) -> { - return CreateTileEntityBuilder.create(this, parent, name, callback, factory); + return CreateTileEntityBuilder.create(this, parent, name, callback, factory::createWithReversedParams); }); } @@ -135,8 +146,8 @@ public class CreateRegistrate extends AbstractRegistrate { return this.entity(self(), name, factory, classification); } - public CreateEntityBuilder entity(P parent, String name, EntityType.EntityFactory factory, - MobCategory classification) { + public CreateEntityBuilder entity(P parent, String name, + EntityType.EntityFactory factory, MobCategory classification) { return (CreateEntityBuilder) this.entry(name, (callback) -> { return CreateEntityBuilder.create(this, parent, name, callback, factory, classification); }); diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateTileEntityBuilder.java b/src/main/java/com/simibubi/create/foundation/data/CreateTileEntityBuilder.java index 6c8bd0d1de..0c275c1807 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateTileEntityBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateTileEntityBuilder.java @@ -8,11 +8,9 @@ import com.tterrag.registrate.AbstractRegistrate; import com.tterrag.registrate.builders.BuilderCallback; import com.tterrag.registrate.builders.TileEntityBuilder; import com.tterrag.registrate.util.OneTimeEventReceiver; -import com.tterrag.registrate.util.nullness.NonNullFunction; import com.tterrag.registrate.util.nullness.NonNullSupplier; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; @@ -23,12 +21,12 @@ public class CreateTileEntityBuilder extends TileEntit private NonNullSupplier> instanceFactory; public static TileEntityBuilder create(AbstractRegistrate owner, P parent, - String name, BuilderCallback callback, NonNullFunction, ? extends T> factory) { + String name, BuilderCallback callback, BlockEntityFactory factory) { return new CreateTileEntityBuilder<>(owner, parent, name, callback, factory); } protected CreateTileEntityBuilder(AbstractRegistrate owner, P parent, String name, BuilderCallback callback, - NonNullFunction, ? extends T> factory) { + BlockEntityFactory factory) { super(owner, parent, name, callback, factory); } @@ -46,9 +44,9 @@ public class CreateTileEntityBuilder extends TileEntit OneTimeEventReceiver.addModListener(FMLClientSetupEvent.class, $ -> { NonNullSupplier> instanceFactory = this.instanceFactory; if (instanceFactory != null) { - InstancedRenderRegistry.getInstance().register(getEntry(), instanceFactory.get()); + InstancedRenderRegistry.getInstance() + .register(getEntry(), instanceFactory.get()); } - }); } } diff --git a/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java b/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java index 9874e1a4c0..cb62eeeb96 100644 --- a/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java +++ b/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java @@ -181,7 +181,7 @@ public class FluidHelper { tank.drain(copy, FluidAction.EXECUTE); if (!player.isCreative()) - player.getInventory().placeItemBackInInventory(world, out); + player.getInventory().placeItemBackInInventory(out); te.notifyUpdate(); return true; } diff --git a/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiContainerScreen.java b/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiContainerScreen.java index 656569107a..534a085a06 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiContainerScreen.java +++ b/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiContainerScreen.java @@ -195,7 +195,7 @@ public abstract class AbstractSimiContainerScreen 0; + boolean hasStressImpact = + StressImpact.isEnabled() && showStressImpact && BlockStressValues.getImpact(block) > 0; boolean hasStressCapacity = StressImpact.isEnabled() && BlockStressValues.hasCapacity(block); if (hasSpeedRequirement) { - List speedLevels = - Lang.translatedOptions("tooltip.speedRequirement", "none", "medium", "high"); + List speedLevels = Lang.translatedOptions("tooltip.speedRequirement", "none", "medium", "high"); int index = minimumRequiredSpeedLevel.ordinal(); MutableComponent level = new TextComponent(makeProgressBar(3, index)).withStyle(minimumRequiredSpeedLevel.getTextColor()); @@ -203,8 +208,12 @@ public class ItemDescription { boolean hasControls = !linesOnCtrl.isEmpty(); if (hasDescription || hasControls) { - String[] holdDesc = Lang.translate("tooltip.holdForDescription", "$").getString().split("\\$"); - String[] holdCtrl = Lang.translate("tooltip.holdForControls", "$").getString().split("\\$"); + String[] holdDesc = Lang.translate("tooltip.holdForDescription", "$") + .getString() + .split("\\$"); + String[] holdCtrl = Lang.translate("tooltip.holdForControls", "$") + .getString() + .split("\\$"); MutableComponent keyShift = Lang.translate("tooltip.keyShift"); MutableComponent keyCtrl = Lang.translate("tooltip.keyCtrl"); for (List list : Arrays.asList(lines, linesOnShift, linesOnCtrl)) { diff --git a/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java b/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java index 6fe9214bc0..f40029b040 100644 --- a/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java +++ b/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java @@ -1,7 +1,5 @@ package com.simibubi.create.foundation.item; -import static net.minecraft.util.text.TextFormatting.GOLD; - import java.text.BreakIterator; import java.util.ArrayList; import java.util.HashMap; @@ -52,9 +50,9 @@ public class TooltipHelper { Component spacing = IHaveGoggleInformation.componentSpacing; tooltip.add(spacing.plainCopy() .append(Lang.translate(hintKey + ".title")) - .withStyle(GOLD)); + .withStyle(ChatFormatting.GOLD)); Component hint = Lang.translate(hintKey); - List cutComponent = TooltipHelper.cutTextComponent(hint, GRAY, ChatFormatting.WHITE); + List cutComponent = TooltipHelper.cutTextComponent(hint, ChatFormatting.GRAY, ChatFormatting.WHITE); for (Component component : cutComponent) tooltip.add(spacing.plainCopy() .append(component)); diff --git a/src/main/java/com/simibubi/create/foundation/mixin/FixNormalScalingMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/FixNormalScalingMixin.java index aed4283f2a..971b059f94 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/FixNormalScalingMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/FixNormalScalingMixin.java @@ -29,7 +29,7 @@ public class FixNormalScalingMixin { * that would invert all normals. Additionally, Minecraft's fastInverseCbrt method * does not work for negative numbers. */ - @ModifyArg(at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;fastInvCubeRoot(F)F"), method = "scale(FFF)V") + @ModifyArg(at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/Mth;fastInvCubeRoot(F)F"), method = "scale(FFF)V") private float absInvCbrtInput(float input) { return Math.abs(input); } diff --git a/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java b/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java index eb541ccd4b..629510b679 100644 --- a/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java +++ b/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java @@ -124,7 +124,7 @@ public enum AllPackets { FUNNEL_FLAP(FunnelFlapPacket.class, FunnelFlapPacket::new, PLAY_TO_CLIENT), POTATO_CANNON(PotatoCannonPacket.class, PotatoCannonPacket::new, PLAY_TO_CLIENT), SOUL_PULSE(SoulPulseEffectPacket.class, SoulPulseEffectPacket::new, PLAY_TO_CLIENT), - PERSISTENT_DATA(ISyncPersistentData.Packet.class, ISyncPersistentData.Packet::new, PLAY_TO_CLIENT), + PERSISTENT_DATA(ISyncPersistentData.PersistentDataPacket.class, ISyncPersistentData.PersistentDataPacket::new, PLAY_TO_CLIENT), SYNC_POTATO_PROJECTILE_TYPES(PotatoProjectileTypeManager.SyncPacket.class, PotatoProjectileTypeManager.SyncPacket::new, PLAY_TO_CLIENT), ; diff --git a/src/main/java/com/simibubi/create/foundation/networking/ISyncPersistentData.java b/src/main/java/com/simibubi/create/foundation/networking/ISyncPersistentData.java index 3fb9b2dfab..0395cd27ce 100644 --- a/src/main/java/com/simibubi/create/foundation/networking/ISyncPersistentData.java +++ b/src/main/java/com/simibubi/create/foundation/networking/ISyncPersistentData.java @@ -15,21 +15,21 @@ public interface ISyncPersistentData { void onPersistentDataUpdated(); default void syncPersistentDataWithTracking(Entity self) { - AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> self), new Packet(self)); + AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> self), new PersistentDataPacket(self)); } - public static class Packet extends SimplePacketBase { + public static class PersistentDataPacket extends SimplePacketBase { private int entityId; private Entity entity; private CompoundTag readData; - public Packet(Entity entity) { + public PersistentDataPacket(Entity entity) { this.entity = entity; this.entityId = entity.getId(); } - public Packet(FriendlyByteBuf buffer) { + public PersistentDataPacket(FriendlyByteBuf buffer) { entityId = buffer.readInt(); readData = buffer.readNbt(); } diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java index 20e9d20107..27db7b7856 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java @@ -157,7 +157,7 @@ public class PonderScene { if (!world.getBounds() .isInside(selectedPos)) return Pair.of(ItemStack.EMPTY, null); - if (new BoundingBox(origin, origin.offset(new Vec3i(basePlateSize - 1, 0, basePlateSize - 1))) + if (BoundingBox.fromCorners(origin, origin.offset(new Vec3i(basePlateSize - 1, 0, basePlateSize - 1))) .isInside(selectedPos)) { if (PonderIndex.EDITOR_MODE) nearestHit.getValue() @@ -171,8 +171,8 @@ public class PonderScene { .selectBlock(selectedPos); BlockState blockState = world.getBlockState(selectedPos); ItemStack pickBlock = blockState.getPickBlock( - new BlockHitResult(VecHelper.getCenterOf(selectedPos), Direction.UP, selectedPos, true), world, - selectedPos, Minecraft.getInstance().player); + new BlockHitResult(VecHelper.getCenterOf(selectedPos), Direction.UP, selectedPos, true), world, selectedPos, + Minecraft.getInstance().player); return Pair.of(pickBlock, selectedPos); } @@ -358,10 +358,8 @@ public class PonderScene { .map(type::cast) .forEach(function); /* - * for (Entity element : world.getEntities()) { - * if (type.isInstance(element)) - * function.accept(type.cast(element)); - * } + * for (Entity element : world.getEntities()) { if (type.isInstance(element)) + * function.accept(type.cast(element)); } */ } @@ -378,7 +376,7 @@ public class PonderScene { } public BoundingBox getBounds() { - return world == null ? new BoundingBox() : world.getBounds(); + return world == null ? new BoundingBox(BlockPos.ZERO) : world.getBounds(); } public Supplier registerText(String defaultText) { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java index 23a4fc1ae0..35c63c3dd3 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java @@ -186,7 +186,7 @@ public class PonderWorld extends SchematicWorld { double d0 = Mth.lerp((double) pt, entity.xOld, entity.getX()); double d1 = Mth.lerp((double) pt, entity.yOld, entity.getY()); double d2 = Mth.lerp((double) pt, entity.zOld, entity.getZ()); - float f = Mth.lerp(pt, entity.yRotO, entity.yRot); + float f = Mth.lerp(pt, entity.yRotO, entity.getYRot()); EntityRenderDispatcher renderManager = Minecraft.getInstance() .getEntityRenderDispatcher(); int light = renderManager.getRenderer(entity) diff --git a/src/main/java/com/simibubi/create/foundation/ponder/SceneBuildingUtil.java b/src/main/java/com/simibubi/create/foundation/ponder/SceneBuildingUtil.java index fcadd81a98..5abc667adf 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/SceneBuildingUtil.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/SceneBuildingUtil.java @@ -111,7 +111,7 @@ public class SceneBuildingUtil { } public Selection cuboid(BlockPos origin, Vec3i size) { - return Selection.of(new BoundingBox(origin, origin.offset(size))); + return Selection.of(BoundingBox.fromCorners(origin, origin.offset(size))); } } diff --git a/src/main/java/com/simibubi/create/foundation/ponder/Selection.java b/src/main/java/com/simibubi/create/foundation/ponder/Selection.java index f5fa0b9031..de4e32d5b4 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/Selection.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/Selection.java @@ -142,12 +142,12 @@ public abstract class Selection implements Predicate { } private AABB getAABB() { - return new AABB(bb.x0, bb.y0, bb.z0, bb.x1 + 1, bb.y1 + 1, bb.z1 + 1); + return new AABB(bb.minX(), bb.minY(), bb.minZ(), bb.maxX() + 1, bb.maxY() + 1, bb.maxZ() + 1); } @Override public Selection copy() { - return new Simple(new BoundingBox(bb)); + return new Simple(new BoundingBox(bb.minX(), bb.minY(), bb.minZ(), bb.maxX(), bb.maxY(), bb.maxZ())); } } diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/DeployerScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/DeployerScenes.java index 575d2de081..14918720a1 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/DeployerScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/DeployerScenes.java @@ -134,7 +134,7 @@ public class DeployerScenes { ElementLink entity1 = scene.world.createItemEntity(entitySpawn, util.vector.of(0, 0.2, 0), tulip); scene.idle(17); - scene.world.modifyEntity(entity1, Entity::remove); + scene.world.modifyEntity(entity1, Entity::discard); scene.world.modifyTileNBT(deployerSelection, teType, nbt -> nbt.put("HeldItem", tulip.serializeNBT())); scene.idle(10); scene.overlay.showText(40) @@ -184,7 +184,7 @@ public class DeployerScenes { entity.zo = p.z; entity.animationPosition = 0; entity.yRotO = 210; - entity.yRot = 210; + entity.setYRot(210); entity.yHeadRotO = 210; entity.yHeadRot = 210; return entity; @@ -193,7 +193,7 @@ public class DeployerScenes { scene.world.showSection(util.select.position(deployerPos.above()), Direction.WEST); entity1 = scene.world.createItemEntity(entitySpawn, util.vector.of(0, 0.2, 0), shears); scene.idle(17); - scene.world.modifyEntity(entity1, Entity::remove); + scene.world.modifyEntity(entity1, Entity::discard); scene.world.modifyTileNBT(deployerSelection, teType, nbt -> nbt.put("HeldItem", shears.serializeNBT())); scene.idle(10); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/ProcessingScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/ProcessingScenes.java index d3eac4def2..c8459c492f 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/ProcessingScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/ProcessingScenes.java @@ -565,7 +565,7 @@ public class ProcessingScenes { Blaze blazeEntity = EntityType.BLAZE.create(w); Vec3 v = util.vector.topOf(center); blazeEntity.setPosRaw(v.x, v.y, v.z); - blazeEntity.yRotO = blazeEntity.yRot = 180; + blazeEntity.setYRot(blazeEntity.yRotO = 180); return blazeEntity; }); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/ParrotElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/ParrotElement.java index 7ddbdf9465..8073eeccba 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/ParrotElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/elements/ParrotElement.java @@ -50,8 +50,8 @@ public class ParrotElement extends AnimatedSceneElement { entity.xOld = 0; entity.yOld = 0; entity.zOld = 0; - entity.xRotO = entity.xRot = 0; - entity.yRotO = entity.yRot = 180; + entity.setXRot(entity.xRotO = 0); + entity.setYRot(entity.yRotO = 180); } @Override @@ -59,7 +59,7 @@ public class ParrotElement extends AnimatedSceneElement { super.tick(scene); if (entity == null) { entity = pose.create(scene.getWorld()); - entity.yRotO = entity.yRot = 180; + entity.setYRot(entity.yRotO = 180); } entity.tickCount++; @@ -71,8 +71,8 @@ public class ParrotElement extends AnimatedSceneElement { entity.xo = entity.getX(); entity.yo = entity.getY(); entity.zo = entity.getZ(); - entity.yRotO = entity.yRot; - entity.xRotO = entity.xRot; + entity.yRotO = entity.getYRot(); + entity.xRotO = entity.getXRot(); pose.tick(scene, entity, location); @@ -95,12 +95,12 @@ public class ParrotElement extends AnimatedSceneElement { public void setRotation(Vec3 eulers, boolean immediate) { if (entity == null) return; - entity.xRot = (float) eulers.x; - entity.yRot = (float) eulers.y; + entity.setXRot((float) eulers.x); + entity.setYRot((float) eulers.y); if (!immediate) return; - entity.xRotO = entity.xRot; - entity.yRotO = entity.yRot; + entity.xRotO = entity.getXRot(); + entity.yRotO = entity.getYRot(); } public Vec3 getPositionOffset() { @@ -108,7 +108,7 @@ public class ParrotElement extends AnimatedSceneElement { } public Vec3 getRotation() { - return entity != null ? new Vec3(entity.xRot, entity.yRot, 0) : Vec3.ZERO; + return entity != null ? new Vec3(entity.getXRot(), entity.getYRot(), 0) : Vec3.ZERO; } @Override @@ -118,16 +118,16 @@ public class ParrotElement extends AnimatedSceneElement { if (entity == null) { entity = pose.create(world); - entity.yRotO = entity.yRot = 180; + entity.setYRot(entity.yRotO = 180); } ms.pushPose(); ms.translate(location.x, location.y, location.z); - ms.translate(Mth.lerp(pt, entity.xo, entity.getX()), - Mth.lerp(pt, entity.yo, entity.getY()), Mth.lerp(pt, entity.zo, entity.getZ())); + ms.translate(Mth.lerp(pt, entity.xo, entity.getX()), Mth.lerp(pt, entity.yo, entity.getY()), + Mth.lerp(pt, entity.zo, entity.getZ())); MatrixTransformStack.of(ms) - .rotateY(AngleHelper.angleLerp(pt, entity.yRotO, entity.yRot)); + .rotateY(AngleHelper.angleLerp(pt, entity.yRotO, entity.getYRot())); entityrenderermanager.render(entity, 0, 0, 0, 0, pt, ms, buffer, lightCoordsFromFade(fade)); ms.popPose(); @@ -161,8 +161,8 @@ public class ParrotElement extends AnimatedSceneElement { @Override void tick(PonderScene scene, Parrot entity, Vec3 location) { - entity.yRotO = entity.yRot; - entity.yRot -= 2; + entity.yRotO = entity.getYRot(); + entity.setYRot(entity.getYRot() - 2); } } @@ -199,8 +199,8 @@ public class ParrotElement extends AnimatedSceneElement { if (!(tileEntity instanceof KineticTileEntity)) return; float rpm = ((KineticTileEntity) tileEntity).getSpeed(); - entity.yRotO = entity.yRot; - entity.yRot += (rpm * .3f); + entity.yRotO = entity.getYRot(); + entity.setYRot(entity.getYRot() + (rpm * .3f)); } } @@ -214,14 +214,12 @@ public class ParrotElement extends AnimatedSceneElement { double d0 = p_200602_2_.x - Vector3d.x; double d1 = p_200602_2_.y - Vector3d.y; double d2 = p_200602_2_.z - Vector3d.z; - double d3 = (double) Mth.sqrt(d0 * d0 + d2 * d2); - float targetPitch = - Mth.wrapDegrees((float) -(Mth.atan2(d1, d3) * (double) (180F / (float) Math.PI))); - float targetYaw = - Mth.wrapDegrees((float) -(Mth.atan2(d2, d0) * (double) (180F / (float) Math.PI)) + 90); + double d3 = Mth.sqrt((float) (d0 * d0 + d2 * d2)); + float targetPitch = Mth.wrapDegrees((float) -(Mth.atan2(d1, d3) * (double) (180F / (float) Math.PI))); + float targetYaw = Mth.wrapDegrees((float) -(Mth.atan2(d2, d0) * (double) (180F / (float) Math.PI)) + 90); - entity.xRot = AngleHelper.angleLerp(.4f, entity.xRot, targetPitch); - entity.yRot = AngleHelper.angleLerp(.4f, entity.yRot, targetYaw); + entity.setXRot(AngleHelper.angleLerp(.4f, entity.getXRot(), targetPitch)); + entity.setYRot(AngleHelper.angleLerp(.4f, entity.getYRot(), targetYaw)); } protected abstract Vec3 getFacedVec(PonderScene scene); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/WorldSectionElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/WorldSectionElement.java index a5d0e24870..dd0dca25b2 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/WorldSectionElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/elements/WorldSectionElement.java @@ -5,8 +5,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Random; - -import org.lwjgl.opengl.GL11; +import java.util.function.Consumer; import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.mojang.blaze3d.systems.RenderSystem; @@ -15,6 +14,7 @@ import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.SheetedDecalTextureGenerator; import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.VertexFormat; import com.simibubi.create.CreateClient; import com.simibubi.create.foundation.ponder.PonderScene; import com.simibubi.create.foundation.ponder.PonderWorld; @@ -34,18 +34,18 @@ import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.BlockRenderDispatcher; import net.minecraft.client.renderer.block.ModelBlockRenderer; -import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.resources.model.ModelBakery; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.util.Mth; import net.minecraft.world.level.ClipContext; -import net.minecraft.world.level.ClipContext.Block; -import net.minecraft.world.level.ClipContext.Fluid; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.TickableBlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.phys.BlockHitResult; @@ -60,7 +60,7 @@ public class WorldSectionElement extends AnimatedSceneElement { public static final Compartment> DOC_WORLD_SECTION = new Compartment<>(); List renderedTileEntities; - List tickableTileEntities; + List>> tickableTileEntities; Selection section; boolean redraw; @@ -180,8 +180,8 @@ public class WorldSectionElement extends AnimatedSceneElement { public Pair rayTrace(PonderWorld world, Vec3 source, Vec3 target) { world.setMask(this.section); Vec3 transformedTarget = reverseTransformVec(target); - BlockHitResult rayTraceBlocks = world.clip(new ClipContext(reverseTransformVec(source), - transformedTarget, Block.OUTLINE, Fluid.NONE, null)); + BlockHitResult rayTraceBlocks = world.clip(new ClipContext(reverseTransformVec(source), transformedTarget, + ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, null)); world.clearMask(); if (rayTraceBlocks == null) @@ -258,10 +258,12 @@ public class WorldSectionElement extends AnimatedSceneElement { renderedTileEntities.removeIf(te -> scene.getWorld() .getBlockEntity(te.getBlockPos()) != te); tickableTileEntities.removeIf(te -> scene.getWorld() - .getBlockEntity(te.getBlockPos()) != te); + .getBlockEntity(te.getFirst() + .getBlockPos()) != te.getFirst()); tickableTileEntities.forEach(te -> { - if (te instanceof TickableBlockEntity) - ((TickableBlockEntity) te).tick(); + BlockEntity tile = te.getFirst(); + te.getSecond() + .accept(scene.getWorld()); }); } @@ -281,14 +283,23 @@ public class WorldSectionElement extends AnimatedSceneElement { renderedTileEntities = new ArrayList<>(); section.forEach(pos -> { BlockEntity tileEntity = world.getBlockEntity(pos); + BlockState blockState = world.getBlockState(pos); + Block block = blockState.getBlock(); if (tileEntity == null) return; - tickableTileEntities.add(tileEntity); + if (!(block instanceof EntityBlock)) + return; + addTicker(tileEntity, ((EntityBlock) block).getTicker(world, blockState, tileEntity.getType())); renderedTileEntities.add(tileEntity); - tileEntity.clearCache(); }); } + @SuppressWarnings("unchecked") + private void addTicker(T tileEntity, BlockEntityTicker ticker) { + tickableTileEntities.add(Pair.of(tileEntity, w -> ((BlockEntityTicker) ticker).tick(w, + tileEntity.getBlockPos(), tileEntity.getBlockState(), tileEntity))); + } + @Override protected void renderLayer(PonderWorld world, MultiBufferSource buffer, RenderType type, PoseStack ms, float fade, float pt) { @@ -326,12 +337,14 @@ public class WorldSectionElement extends AnimatedSceneElement { ms.pushPose(); ms.translate(pos.getX(), pos.getY(), pos.getZ()); VertexConsumer builder = new SheetedDecalTextureGenerator( - buffer.getBuffer(ModelBakery.DESTROY_TYPES.get(entry.getValue())), - overlayMS.last().pose(), - overlayMS.last().normal()); + buffer.getBuffer(ModelBakery.DESTROY_TYPES.get(entry.getValue())), overlayMS.last() + .pose(), + overlayMS.last() + .normal()); Minecraft.getInstance() .getBlockRenderer() - .renderModel(world.getBlockState(pos), pos, world, ms, builder, true, world.random, EmptyModelData.INSTANCE); + .renderBatched(world.getBlockState(pos), pos, world, ms, builder, true, world.random, + EmptyModelData.INSTANCE); ms.popPose(); } } @@ -342,11 +355,11 @@ public class WorldSectionElement extends AnimatedSceneElement { int code = hashCode() ^ world.hashCode(); Pair key = Pair.of(code, RenderType.chunkBufferLayers() - .indexOf(type)); + .indexOf(type)); if (redraw) bufferCache.invalidate(DOC_WORLD_SECTION, key); SuperByteBuffer contraptionBuffer = - bufferCache.get(DOC_WORLD_SECTION, key, () -> buildStructureBuffer(world, type)); + bufferCache.get(DOC_WORLD_SECTION, key, () -> buildStructureBuffer(world, type)); if (contraptionBuffer.isEmpty()) return; @@ -389,7 +402,7 @@ public class WorldSectionElement extends AnimatedSceneElement { ModelBlockRenderer blockRenderer = dispatcher.getModelRenderer(); Random random = new Random(); BufferBuilder builder = new BufferBuilder(DefaultVertexFormat.BLOCK.getIntegerSize()); - builder.begin(GL11.GL_QUADS, DefaultVertexFormat.BLOCK); + builder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.BLOCK); world.setMask(this.section); section.forEach(pos -> { @@ -402,8 +415,7 @@ public class WorldSectionElement extends AnimatedSceneElement { if (state.getRenderShape() != RenderShape.ENTITYBLOCK_ANIMATED && state.getBlock() != Blocks.AIR && ItemBlockRenderTypes.canRenderInLayer(state, layer)) { BlockEntity tileEntity = world.getBlockEntity(pos); - blockRenderer.renderModel(world, dispatcher.getBlockModel(state), state, pos, ms, builder, true, - random, 42, OverlayTexture.NO_OVERLAY, + dispatcher.renderBatched(state, pos, world, ms, builder, true, random, tileEntity != null ? tileEntity.getModelData() : EmptyModelData.INSTANCE); } diff --git a/src/main/java/com/simibubi/create/foundation/render/ShadowRenderHelper.java b/src/main/java/com/simibubi/create/foundation/render/ShadowRenderHelper.java index 612ba9e1bd..b571dcfe4a 100644 --- a/src/main/java/com/simibubi/create/foundation/render/ShadowRenderHelper.java +++ b/src/main/java/com/simibubi/create/foundation/render/ShadowRenderHelper.java @@ -74,12 +74,12 @@ public class ShadowRenderHelper { f = 1.0F; } - AABB axisalignedbb = voxelshape.bounds(); - double d0 = (double) pos.getX() + axisalignedbb.minX; - double d1 = (double) pos.getX() + axisalignedbb.maxX; - double d2 = (double) pos.getY() + axisalignedbb.minY; - double d3 = (double) pos.getZ() + axisalignedbb.minZ; - double d4 = (double) pos.getZ() + axisalignedbb.maxZ; + AABB AABB = voxelshape.bounds(); + double d0 = (double) pos.getX() + AABB.minX; + double d1 = (double) pos.getX() + AABB.maxX; + double d2 = (double) pos.getY() + AABB.minY; + double d3 = (double) pos.getZ() + AABB.minZ; + double d4 = (double) pos.getZ() + AABB.maxZ; float f1 = (float) (d0 - x); float f2 = (float) (d1 - x); float f3 = (float) (d2 - y + 0.015625D); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java b/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java index b5aa3018ba..cf768e6403 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java @@ -12,22 +12,23 @@ import com.simibubi.create.foundation.gui.IInteractionChecker; import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.utility.IPartialSafeNBT; +import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.entity.TickableBlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.items.CapabilityItemHandler; -public abstract class SmartTileEntity extends SyncedTileEntity implements TickableBlockEntity, IPartialSafeNBT, IInteractionChecker { +public abstract class SmartTileEntity extends SyncedTileEntity implements IPartialSafeNBT, IInteractionChecker { private final Map, TileEntityBehaviour> behaviours; - // Internally maintained to be identical to behaviorMap.values() in order to improve iteration performance. + // Internally maintained to be identical to behaviorMap.values() in order to + // improve iteration performance. private final List behaviourList; private boolean initialized; private boolean firstNbtRead; @@ -37,8 +38,8 @@ public abstract class SmartTileEntity extends SyncedTileEntity implements Tickab // Used for simulating this TE in a client-only setting private boolean virtualMode; - public SmartTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public SmartTileEntity(BlockEntityType tileEntityTypeIn, BlockPos pos, BlockState state) { + super(tileEntityTypeIn, pos, state); behaviours = new HashMap<>(); initialized = false; firstNbtRead = true; @@ -60,7 +61,6 @@ public abstract class SmartTileEntity extends SyncedTileEntity implements Tickab */ public void addBehavioursDeferred(List behaviours) {} - @Override public void tick() { if (!initialized && hasLevel()) { initialize(); @@ -78,7 +78,7 @@ public abstract class SmartTileEntity extends SyncedTileEntity implements Tickab public void initialize() { if (firstNbtRead) { firstNbtRead = false; - MinecraftForge.EVENT_BUS.post(new TileEntityBehaviourEvent<>(getBlockState(), this, behaviours)); + MinecraftForge.EVENT_BUS.post(new TileEntityBehaviourEvent<>(this, behaviours)); updateBehaviorList(); } @@ -99,28 +99,28 @@ public abstract class SmartTileEntity extends SyncedTileEntity implements Tickab } @Override - public final void readClientUpdate(BlockState state, CompoundTag tag) { - fromTag(state, tag, true); + public final void readClientUpdate(CompoundTag tag) { + fromTag(tag, true); } @Override - public final void load(BlockState state, CompoundTag tag) { - fromTag(state, tag, false); + public final void load(CompoundTag tag) { + fromTag(tag, false); } /** * Hook only these in future subclasses of STE */ - protected void fromTag(BlockState state, CompoundTag compound, boolean clientPacket) { + protected void fromTag(CompoundTag compound, boolean clientPacket) { if (firstNbtRead) { firstNbtRead = false; ArrayList list = new ArrayList<>(); addBehavioursDeferred(list); list.forEach(b -> behaviours.put(b.getType(), b)); - MinecraftForge.EVENT_BUS.post(new TileEntityBehaviourEvent<>(state, this, behaviours)); + MinecraftForge.EVENT_BUS.post(new TileEntityBehaviourEvent<>(this, behaviours)); updateBehaviorList(); } - super.load(state, compound); + super.load(compound); behaviourList.forEach(tb -> tb.read(compound, clientPacket)); } @@ -142,11 +142,8 @@ public abstract class SmartTileEntity extends SyncedTileEntity implements Tickab } public ItemRequirement getRequiredItems() { - return behaviourList.stream().reduce( - ItemRequirement.NONE, - (a, b) -> a.with(b.getRequiredItems()), - (a, b) -> a.with(b) - ); + return behaviourList.stream() + .reduce(ItemRequirement.NONE, (a, b) -> a.with(b.getRequiredItems()), (a, b) -> a.with(b)); } @Override @@ -220,7 +217,7 @@ public abstract class SmartTileEntity extends SyncedTileEntity implements Tickab return player.distanceToSqr(worldPosition.getX() + 0.5D, worldPosition.getY() + 0.5D, worldPosition.getZ() + 0.5D) <= 64.0D; } - + public void sendToContainer(FriendlyByteBuf buffer) { buffer.writeBlockPos(getBlockPos()); buffer.writeNbt(getUpdateTag()); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntityTicker.java b/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntityTicker.java new file mode 100644 index 0000000000..ce6d0eb7ff --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntityTicker.java @@ -0,0 +1,17 @@ +package com.simibubi.create.foundation.tileEntity; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.state.BlockState; + +public class SmartTileEntityTicker implements BlockEntityTicker { + + @Override + public void tick(Level p_155253_, BlockPos p_155254_, BlockState p_155255_, T p_155256_) { + if (!p_155256_.hasLevel()) + p_155256_.setLevel(p_155253_); + p_155256_.tick(); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/SyncedTileEntity.java b/src/main/java/com/simibubi/create/foundation/tileEntity/SyncedTileEntity.java index c06549bc55..be07ab6acb 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/SyncedTileEntity.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/SyncedTileEntity.java @@ -3,6 +3,7 @@ package com.simibubi.create.foundation.tileEntity; import javax.annotation.ParametersAreNonnullByDefault; import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.core.BlockPos; import net.minecraft.core.SectionPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.Connection; @@ -17,8 +18,8 @@ import net.minecraftforge.fmllegacy.network.PacketDistributor; @ParametersAreNonnullByDefault public abstract class SyncedTileEntity extends BlockEntity { - public SyncedTileEntity(BlockEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); + public SyncedTileEntity(BlockEntityType tileEntityTypeIn, BlockPos pos, BlockState state) { + super(tileEntityTypeIn, pos, state); } @Override @@ -31,10 +32,6 @@ public abstract class SyncedTileEntity extends BlockEntity { return save(new CompoundTag()); } - @Override - public void handleUpdateTag(BlockState state, CompoundTag tag) { - load(state, tag); - } public void sendData() { if (level != null && !level.isClientSide) @@ -53,12 +50,12 @@ public abstract class SyncedTileEntity extends BlockEntity { @Override public void onDataPacket(Connection net, ClientboundBlockEntityDataPacket pkt) { - readClientUpdate(getBlockState(), pkt.getTag()); + readClientUpdate(pkt.getTag()); } // Special handling for client update packets - public void readClientUpdate(BlockState state, CompoundTag tag) { - load(state, tag); + public void readClientUpdate(CompoundTag tag) { + load(tag); } // Special handling for client update packets diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java index d7e5f08b6d..7359276635 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java @@ -82,7 +82,7 @@ public class FilteringHandler { .shrink(1); if (behaviour.getFilter() .getItem() instanceof FilterItem) - player.inventory.placeItemBackInInventory(world, behaviour.getFilter()); + player.getInventory().placeItemBackInInventory(behaviour.getFilter()); } if (toApply.getItem() instanceof FilterItem) toApply.setCount(1); diff --git a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java index f0785b1399..3c84ff944e 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java @@ -47,6 +47,7 @@ import net.minecraft.world.level.material.FluidState; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.RenderProperties; import net.minecraftforge.common.IPlantable; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.world.BlockEvent; @@ -54,8 +55,7 @@ import net.minecraftforge.event.world.BlockEvent; public class BlockHelper { @OnlyIn(Dist.CLIENT) - public static void addReducedDestroyEffects(BlockState state, Level worldIn, BlockPos pos, - ParticleEngine manager) { + public static void addReducedDestroyEffects(BlockState state, Level worldIn, BlockPos pos, ParticleEngine manager) { if (!(worldIn instanceof ClientLevel)) return; ClientLevel world = (ClientLevel) worldIn; @@ -64,10 +64,16 @@ public class BlockHelper { voxelshape.forAllBoxes((x1, y1, z1, x2, y2, z2) -> amtBoxes.increment()); double chance = 1d / amtBoxes.getValue(); - voxelshape.forAllBoxes((x1, y1, z1, x2, y2, z2) -> { - double d1 = Math.min(1.0D, x2 - x1); - double d2 = Math.min(1.0D, y2 - y1); - double d3 = Math.min(1.0D, z2 - z1); + if (state.isAir()) + return; + if (RenderProperties.get(state) + .addDestroyEffects(state, worldIn, pos, manager)) + return; + + voxelshape.forAllBoxes((p_172273_, p_172274_, p_172275_, p_172276_, p_172277_, p_172278_) -> { + double d1 = Math.min(1.0D, p_172276_ - p_172273_); + double d2 = Math.min(1.0D, p_172277_ - p_172274_); + double d3 = Math.min(1.0D, p_172278_ - p_172275_); int i = Math.max(2, Mth.ceil(d1 / 0.25D)); int j = Math.max(2, Mth.ceil(d2 / 0.25D)); int k = Math.max(2, Mth.ceil(d3 / 0.25D)); @@ -81,16 +87,14 @@ public class BlockHelper { double d4 = ((double) l + 0.5D) / (double) i; double d5 = ((double) i1 + 0.5D) / (double) j; double d6 = ((double) j1 + 0.5D) / (double) k; - double d7 = d4 * d1 + x1; - double d8 = d5 * d2 + y1; - double d9 = d6 * d3 + z1; - manager - .add((new TerrainParticle(world, (double) pos.getX() + d7, (double) pos.getY() + d8, - (double) pos.getZ() + d9, d4 - 0.5D, d5 - 0.5D, d6 - 0.5D, state)).init(pos)); + double d7 = d4 * d1 + p_172273_; + double d8 = d5 * d2 + p_172274_; + double d9 = d6 * d3 + p_172275_; + manager.add(new TerrainParticle(world, pos.getX() + d7, pos.getY() + d8, pos.getZ() + d9, + d4 - 0.5D, d5 - 0.5D, d6 - 0.5D, state, pos).updateSprite(state, pos)); } } } - }); } @@ -143,26 +147,30 @@ public class BlockHelper { { // Try held Item first int preferredSlot = player.getInventory().selected; - ItemStack itemstack = player.getInventory().getItem(preferredSlot); + ItemStack itemstack = player.getInventory() + .getItem(preferredSlot); int count = itemstack.getCount(); if (itemstack.getItem() == required && count > 0) { int taken = Math.min(count, amount - amountFound); - player.getInventory().setItem(preferredSlot, - new ItemStack(itemstack.getItem(), count - taken)); + player.getInventory() + .setItem(preferredSlot, new ItemStack(itemstack.getItem(), count - taken)); amountFound += taken; } } // Search inventory - for (int i = 0; i < player.getInventory().getContainerSize(); ++i) { + for (int i = 0; i < player.getInventory() + .getContainerSize(); ++i) { if (amountFound == amount) break; - ItemStack itemstack = player.getInventory().getItem(i); + ItemStack itemstack = player.getInventory() + .getItem(i); int count = itemstack.getCount(); if (itemstack.getItem() == required && count > 0) { int taken = Math.min(count, amount - amountFound); - player.getInventory().setItem(i, new ItemStack(itemstack.getItem(), count - taken)); + player.getInventory() + .setItem(i, new ItemStack(itemstack.getItem(), count - taken)); amountFound += taken; } } @@ -170,7 +178,8 @@ public class BlockHelper { if (needsTwo) { // Give back 1 if uneven amount was removed if (amountFound % 2 != 0) - player.getInventory().add(new ItemStack(required)); + player.getInventory() + .add(new ItemStack(required)); amountFound /= 2; } @@ -179,10 +188,9 @@ public class BlockHelper { public static ItemStack getRequiredItem(BlockState state) { ItemStack itemStack = new ItemStack(state.getBlock()); - if (itemStack.getItem() == Items.FARMLAND) + Item item = itemStack.getItem(); + if (item == Items.FARMLAND || item == Items.DIRT_PATH) itemStack = new ItemStack(Items.DIRT); - else if (itemStack.getItem() == Items.GRASS_PATH) - itemStack = new ItemStack(Items.GRASS_BLOCK); return itemStack; } @@ -201,7 +209,7 @@ public class BlockHelper { BlockState state = world.getBlockState(pos); if (world.random.nextFloat() < effectChance) world.levelEvent(2001, pos, Block.getId(state)); - BlockEntity tileentity = state.hasTileEntity() ? world.getBlockEntity(pos) : null; + BlockEntity tileentity = state.hasBlockEntity() ? world.getBlockEntity(pos) : null; if (player != null) { BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(world, pos, state, player); MinecraftForge.EVENT_BUS.post(event); @@ -228,8 +236,8 @@ public class BlockHelper { } public static boolean isSolidWall(BlockGetter reader, BlockPos fromPos, Direction toDirection) { - return hasBlockSolidSide(reader.getBlockState(fromPos.relative(toDirection)), reader, fromPos.relative(toDirection), - toDirection.getOpposite()); + return hasBlockSolidSide(reader.getBlockState(fromPos.relative(toDirection)), reader, + fromPos.relative(toDirection), toDirection.getOpposite()); } public static boolean noCollisionInSpace(BlockGetter reader, BlockPos pos) { @@ -253,7 +261,8 @@ public class BlockHelper { world.markAndNotifyBlock(target, chunk, old, state, 82, 512); world.setBlock(target, state, 82); - world.neighborChanged(target, world.getBlockState(target.below()).getBlock(), target.below()); + world.neighborChanged(target, world.getBlockState(target.below()) + .getBlock(), target.below()); } public static void placeSchematicBlock(Level world, BlockState state, BlockPos target, ItemStack stack, @@ -305,7 +314,7 @@ public class BlockHelper { data.putInt("z", target.getZ()); if (tile instanceof KineticTileEntity) ((KineticTileEntity) tile).warnOfMovement(); - tile.load(tile.getBlockState(), data); + tile.load(data); } } @@ -350,7 +359,8 @@ public class BlockHelper { return toState; } - public static > BlockState copyProperty(Property property, BlockState fromState, BlockState toState) { + public static > BlockState copyProperty(Property property, BlockState fromState, + BlockState toState) { if (fromState.hasProperty(property) && toState.hasProperty(property)) { return toState.setValue(property, fromState.getValue(property)); } diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedClientWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedClientWorld.java index f39ade1834..12786d31d1 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedClientWorld.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedClientWorld.java @@ -57,13 +57,13 @@ public class WrappedClientWorld extends ClientLevel { } @Override - public Stream getBlockCollisions(@Nullable Entity entity, AABB axisAlignedBB) { - return world.getBlockCollisions(entity, axisAlignedBB); + public Stream getBlockCollisions(@Nullable Entity entity, AABB AABB) { + return world.getBlockCollisions(entity, AABB); } @Override - public Stream getBlockCollisions(@Nullable Entity entity, AABB axisAlignedBB, BiPredicate blockStateBlockPosBiPredicate) { - return world.getBlockCollisions(entity, axisAlignedBB, blockStateBlockPosBiPredicate); + public Stream getBlockCollisions(@Nullable Entity entity, AABB AABB, BiPredicate blockStateBlockPosBiPredicate) { + return world.getBlockCollisions(entity, AABB, blockStateBlockPosBiPredicate); } @Override diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedServerWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedServerWorld.java index e4cf3c7a03..652256ca1f 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedServerWorld.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedServerWorld.java @@ -5,6 +5,7 @@ import java.util.List; import javax.annotation.ParametersAreNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.Util; import net.minecraft.core.BlockPos; import net.minecraft.server.MinecraftServer; diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java index 791cd06571..6200bbc0d9 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java @@ -7,6 +7,7 @@ import java.util.function.Predicate; import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.RegistryAccess;