Merge remote-tracking branch 'refs/remotes/origin/mc1.20.1/feature-dev' into jay/mc1.20.1/attached-registry-refactors

# Conflicts:
#	src/main/java/com/simibubi/create/content/contraptions/mounted/MinecartContraptionItem.java
This commit is contained in:
TropheusJ 2025-02-17 08:34:54 -05:00
commit 0f752d604c
215 changed files with 1695 additions and 1660 deletions

View file

@ -1,4 +1,4 @@
// 1.20.1 2025-02-07T14:33:10.4318818 Registrate Provider for create [Recipes, Advancements, Loot Tables, Tags (blocks), Tags (items), Tags (fluids), Tags (entity_types), Blockstates, Item models, Lang (en_us/en_ud)]
// 1.20.1 2025-02-12T10:49:57.1047644 Registrate Provider for create [Recipes, Advancements, Loot Tables, Tags (blocks), Tags (items), Tags (fluids), Tags (entity_types), Blockstates, Item models, Lang (en_us/en_ud)]
60bbdf92d2ac9824ea6144955c74043a6005f79d assets/create/blockstates/acacia_window.json
6a67703c2697d81b7dc83e9d72a66f9c9ff08383 assets/create/blockstates/acacia_window_pane.json
c3ae87b62e81d8e9476eccd793bb1548d74c66a1 assets/create/blockstates/adjustable_chain_gearshift.json
@ -642,8 +642,8 @@ b0d8f08968763a5f74e5cd5644377a76a9f39753 assets/create/blockstates/yellow_toolbo
fe8c497aacc641c2f01cec90bba9f19e59cc2ed2 assets/create/blockstates/yellow_valve_handle.json
e819e93fdcbe9fd9c050a052d2718ff3b3539365 assets/create/blockstates/zinc_block.json
64121dcb216381c83b4fe28aa361ea07c24c9ad0 assets/create/blockstates/zinc_ore.json
99c03ec65894ea7d88e3346c5e0c086a7acec6af assets/create/lang/en_ud.json
5f0262b9f6c1139659f6dab4d9c371be50503c0b assets/create/lang/en_us.json
443742f2bb4fc520ec7db483fd22425884cb95be assets/create/lang/en_ud.json
282779fe7ecc64cd99c08e3a7397646af9f500c4 assets/create/lang/en_us.json
a97e1060e00ae701a02e39cd4ef8054cf345fac4 assets/create/models/block/acacia_window.json
103e032c0b1a0a6a27c67da8c91179a564bd281c assets/create/models/block/acacia_window_pane_noside.json
fb00b627abda76ad4fea867ca57dbfadd24fffa3 assets/create/models/block/acacia_window_pane_noside_alt.json

View file

@ -1,4 +1,4 @@
// 1.20.1 2025-02-07T11:36:36.6037564 Create's Standard Recipes
// 1.20.1 2025-02-12T10:49:57.1801346 Create's Standard Recipes
a8cc4af26f6c7c45a9eef12e92af1452fe042454 data/create/advancements/recipes/combat/crafting/appliances/netherite_backtank.json
2c2639c7b307ee7c7a4e97e5efebf496788998ad data/create/advancements/recipes/combat/crafting/appliances/netherite_backtank_from_netherite.json
81dcf0cb1aa99e39bc7d1a386e07cad4cee7d8b9 data/create/advancements/recipes/combat/crafting/appliances/netherite_diving_boots.json
@ -466,7 +466,7 @@ d994ef262b16357984d3ed62f6563d2f37266193 data/create/recipes/crafting/logistics/
4daadd2c67fe8bbf5594fb50dcf051dad7f9997a data/create/recipes/crafting/logistics/factory_gauge.json
2fb7722137990b9b9be967a1f766e138678d0573 data/create/recipes/crafting/logistics/factory_gauge_clear.json
f3ba21e8979256fb78cd618ac4f1082b0b2f9e0c data/create/recipes/crafting/logistics/item_hatch.json
38c6236d7ac157a75ac5a98ab9b712eabb0c78c4 data/create/recipes/crafting/logistics/packager.json
7d66c3b5d704f583e32617b37620e749462eaa1f data/create/recipes/crafting/logistics/packager.json
6b51fa6a5bd1e9dc8e7387269d985cd622ab8ada data/create/recipes/crafting/logistics/packager_from_conversion.json
6852cb8ff6916981920ab9c987c6e357e9236511 data/create/recipes/crafting/logistics/package_frogport.json
dd28b63ceb46a1e9071549c4f8ff32f520c667f6 data/create/recipes/crafting/logistics/powered_latch.json

View file

@ -1580,6 +1580,7 @@
"create.package_port.cannot_reach_down": "pɹɐʍuʍop ʇɔǝuuoɔ ʇouuɐƆ",
"create.package_port.too_far": "ʎɐʍɐ ɹɐɟ oo⟘",
"create.package_port.valid": "✔ ʇɔǝuuoƆ uɐƆ",
"create.packager.no_portable_storage": ןʇɔǝɹıp ǝbɐɹoʇS ǝןqɐʇɹoԀ ɥʇıʍ ǝɔɐɟɹǝʇuı ʇouuɐɔ sɹǝbɐʞɔɐԀ",
"create.packager_link.clear": "uoıʇɔǝןǝs pǝɹɐǝןƆ",
"create.packager_link.set": "pǝʇɔǝןǝs ʇǝbɹɐ⟘",
"create.packager_link.success": "ʇǝbɹɐʇ oʇ punoq ʎןןnɟssǝɔɔnS",

View file

@ -1580,6 +1580,7 @@
"create.package_port.cannot_reach_down": "Cannot connect downward",
"create.package_port.too_far": "Too far away",
"create.package_port.valid": "Can Connect ✔",
"create.packager.no_portable_storage": "Packagers cannot interface with Portable Storage directly",
"create.packager_link.clear": "Cleared selection",
"create.packager_link.set": "Target selected",
"create.packager_link.success": "Successfully bound to target",

View file

@ -7,12 +7,15 @@
},
"C": {
"tag": "forge:ingots/iron"
},
"R": {
"tag": "forge:dusts/redstone"
}
},
"pattern": [
" C ",
"CAC",
" C "
"RCR"
],
"result": {
"item": "create:packager"

View file

@ -383,8 +383,7 @@ public class AllBlocks {
public static final BlockEntry<ShaftBlock> SHAFT = REGISTRATE.block("shaft", ShaftBlock::new)
.initialProperties(SharedProperties::stone)
.properties(p -> p.mapColor(MapColor.METAL)
.forceSolidOn())
.properties(p -> p.mapColor(MapColor.METAL).forceSolidOff())
.transform(BlockStressDefaults.setNoImpact())
.transform(pickaxeOnly())
.blockstate(BlockStateGen.axisBlockProvider(false))
@ -891,7 +890,7 @@ public class AllBlocks {
public static final BlockEntry<FluidPipeBlock> FLUID_PIPE = REGISTRATE.block("fluid_pipe", FluidPipeBlock::new)
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.forceSolidOn())
.properties(p -> p.forceSolidOff())
.transform(pickaxeOnly())
.blockstate(BlockStateGen.pipe())
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::withoutAO))

View file

@ -1,29 +1,30 @@
package com.simibubi.create;
import java.util.function.Supplier;
import com.simibubi.create.content.kinetics.fan.processing.FanProcessingType;
import com.simibubi.create.content.kinetics.mechanicalArm.ArmInteractionPointType;
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttributeType;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceKey;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.registries.IForgeRegistry;
import net.minecraftforge.registries.NewRegistryEvent;
import net.minecraftforge.registries.RegistryBuilder;
import java.util.function.Supplier;
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
public class AllRegistries {
public static Supplier<IForgeRegistry<ArmInteractionPointType>> ARM_INTERACTION_POINT_TYPES;
public static Supplier<IForgeRegistry<FanProcessingType>> FAN_PROCESSING_TYPES;
public static Supplier<IForgeRegistry<ItemAttributeType>> ITEM_ATTRIBUTE_TYPES;
public static Supplier<IForgeRegistry<ArmInteractionPointType>> ARM_INTERACTION_POINT_TYPE;
public static Supplier<IForgeRegistry<FanProcessingType>> FAN_PROCESSING_TYPE;
public static Supplier<IForgeRegistry<ItemAttributeType>> ITEM_ATTRIBUTE_TYPE;
public static final class Keys {
public static final ResourceKey<Registry<ArmInteractionPointType>> ARM_INTERACTION_POINT_TYPES = key("arm_interaction_point_types");
public static final ResourceKey<Registry<FanProcessingType>> FAN_PROCESSING_TYPES = key("fan_processing_types");
public static final ResourceKey<Registry<ItemAttributeType>> ITEM_ATTRIBUTE_TYPES = key("item_attribute_types");
public static final ResourceKey<Registry<ArmInteractionPointType>> ARM_INTERACTION_POINT_TYPE = key("arm_interaction_point_type");
public static final ResourceKey<Registry<FanProcessingType>> FAN_PROCESSING_TYPE = key("fan_processing_type");
public static final ResourceKey<Registry<ItemAttributeType>> ITEM_ATTRIBUTE_TYPE = key("item_attribute_type");
private static <T> ResourceKey<Registry<T>> key(String name) {
return ResourceKey.createRegistryKey(Create.asResource(name));
@ -32,16 +33,16 @@ public class AllRegistries {
@SubscribeEvent
public static void registerRegistries(NewRegistryEvent event) {
ARM_INTERACTION_POINT_TYPES = event.create(new RegistryBuilder<ArmInteractionPointType>()
.setName(Keys.ARM_INTERACTION_POINT_TYPES.location())
ARM_INTERACTION_POINT_TYPE = event.create(new RegistryBuilder<ArmInteractionPointType>()
.setName(Keys.ARM_INTERACTION_POINT_TYPE.location())
.disableSaving());
FAN_PROCESSING_TYPES = event.create(new RegistryBuilder<FanProcessingType>()
.setName(Keys.FAN_PROCESSING_TYPES.location())
FAN_PROCESSING_TYPE = event.create(new RegistryBuilder<FanProcessingType>()
.setName(Keys.FAN_PROCESSING_TYPE.location())
.disableSaving());
ITEM_ATTRIBUTE_TYPES = event.create(new RegistryBuilder<ItemAttributeType>()
.setName(Keys.ITEM_ATTRIBUTE_TYPES.location())
ITEM_ATTRIBUTE_TYPE = event.create(new RegistryBuilder<ItemAttributeType>()
.setName(Keys.ITEM_ATTRIBUTE_TYPE.location())
.disableSaving());
}
}

View file

@ -1,5 +1,7 @@
package com.simibubi.create.compat.computercraft.implementation.peripherals;
import java.nio.charset.StandardCharsets;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import org.jetbrains.annotations.NotNull;
@ -8,7 +10,11 @@ import com.simibubi.create.content.redstone.displayLink.DisplayLinkBlockEntity;
import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext;
import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats;
import dan200.computercraft.api.lua.IArguments;
import dan200.computercraft.api.lua.LuaException;
import dan200.computercraft.api.lua.LuaFunction;
import dan200.computercraft.api.lua.LuaValues;
import dan200.computercraft.api.lua.ObjectLuaTable;
import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.StringTag;
import net.minecraft.nbt.Tag;
@ -53,6 +59,28 @@ public class DisplayLinkPeripheral extends SyncedPeripheral<DisplayLinkBlockEnti
@LuaFunction
public final void write(String text) {
writeImpl(text);
}
@LuaFunction
public final void writeBytes(IArguments args) throws LuaException {
Object data = args.get(0);
byte[] bytes;
if (data instanceof String str) {
bytes = str.getBytes(StandardCharsets.US_ASCII);
} else if (data instanceof Map<?, ?> map) {
ObjectLuaTable table = new ObjectLuaTable(map);
bytes = new byte[table.length()];
for (int i = 0; i < bytes.length; i++) {
bytes[i] = (byte) (table.getInt(i + 1) & 0xff);
}
} else {
throw LuaValues.badArgumentOf(args, 0, "string or table");
}
writeImpl(new String(bytes, StandardCharsets.UTF_8));
}
protected final void writeImpl(String text) {
ListTag tag = blockEntity.getSourceConfig().getList(TAG_KEY, Tag.TAG_STRING);
int x = cursorX.get();

View file

@ -486,11 +486,10 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit
skipActorStop = false;
for (Entity entity : getPassengers()) {
if (!(entity instanceof OrientedContraptionEntity))
if (!(entity instanceof OrientedContraptionEntity orientedCE))
continue;
if (!contraption.stabilizedSubContraptions.containsKey(entity.getUUID()))
continue;
OrientedContraptionEntity orientedCE = (OrientedContraptionEntity) entity;
if (orientedCE.contraption != null && orientedCE.contraption.stalled) {
contraption.stalled = true;
break;
@ -730,7 +729,8 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit
}
@Override
protected void doWaterSplashEffect() {}
protected void doWaterSplashEffect() {
}
public Contraption getContraption() {
return contraption;
@ -797,7 +797,8 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit
@Override
// Make sure nothing can move contraptions out of the way
public void setDeltaMovement(Vec3 motionIn) {}
public void setDeltaMovement(Vec3 motionIn) {
}
@Override
public PushReaction getPistonPushReaction() {

View file

@ -89,7 +89,6 @@ import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.NbtUtils;
import net.minecraft.nbt.Tag;
import net.minecraft.network.protocol.game.DebugPackets;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.ai.village.poi.PoiTypes;
@ -101,11 +100,11 @@ import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.ButtonBlock;
import net.minecraft.world.level.block.ChestBlock;
import net.minecraft.world.level.block.DoorBlock;
import net.minecraft.world.level.block.EntityBlock;
import net.minecraft.world.level.block.PressurePlateBlock;
import net.minecraft.world.level.block.Rotation;
import net.minecraft.world.level.block.SimpleWaterloggedBlock;
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.level.block.state.properties.ChestType;
@ -297,7 +296,9 @@ public abstract class Contraption {
}
}
/** move the first block in frontier queue */
/**
* move the first block in frontier queue
*/
protected boolean moveBlock(Level world, @Nullable Direction forcedDirection, Queue<BlockPos> frontier,
Set<BlockPos> visited) throws AssemblyException {
BlockPos pos = frontier.poll();
@ -323,7 +324,7 @@ public abstract class Contraption {
if (AllBlocks.BELT.has(state))
moveBelt(pos, frontier, visited, state);
if (AllBlocks.WINDMILL_BEARING.has(state) && world.getBlockEntity(pos)instanceof WindmillBearingBlockEntity wbbe)
if (AllBlocks.WINDMILL_BEARING.has(state) && world.getBlockEntity(pos) instanceof WindmillBearingBlockEntity wbbe)
wbbe.disassembleForMovement();
if (AllBlocks.GANTRY_CARRIAGE.has(state))
@ -353,7 +354,7 @@ public abstract class Contraption {
}
// Bogeys tend to have sticky sides
if (state.getBlock()instanceof AbstractBogeyBlock<?> bogey)
if (state.getBlock() instanceof AbstractBogeyBlock<?> bogey)
for (Direction d : bogey.getStickySurfaces(world, pos, state))
if (!visited.contains(pos.relative(d)))
frontier.add(pos.relative(d));
@ -595,9 +596,8 @@ public abstract class Contraption {
private boolean moveChassis(Level world, BlockPos pos, Direction movementDirection, Queue<BlockPos> frontier,
Set<BlockPos> visited) {
BlockEntity be = world.getBlockEntity(pos);
if (!(be instanceof ChassisBlockEntity))
if (!(be instanceof ChassisBlockEntity chassis))
return false;
ChassisBlockEntity chassis = (ChassisBlockEntity) be;
chassis.addAttachedChasses(frontier, visited);
List<BlockPos> includedBlockPositions = chassis.getIncludedBlockPositions(movementDirection, false);
if (includedBlockPositions == null)
@ -650,9 +650,8 @@ public abstract class Contraption {
if (be != null) {
CompoundTag updateTag = be.getUpdateTag();
// the ID needs to be in the tag so the client can properly add the BlockEntity
ResourceLocation id = Objects.requireNonNull(BlockEntityType.getKey(be.getType()));
updateTag.putString("id", id.toString());
// empty tags are intentionally kept, see writeBlocksCompound
// for testing, this line can be commented to emulate legacy behavior
updateTags.put(localPos, updateTag);
}
@ -684,6 +683,9 @@ public abstract class Contraption {
localPos;
nbt.put("Controller", NbtUtils.writeBlockPos(controllerPos));
if (updateTags.containsKey(localPos))
updateTags.get(localPos).put("Controller", NbtUtils.writeBlockPos(controllerPos));
if (multiBlockBE.isController() && multiBlockBE.getHeight() <= 1 && multiBlockBE.getWidth() <= 1) {
nbt.put("LastKnownPos", NbtUtils.writeBlockPos(BlockPos.ZERO.below(Integer.MAX_VALUE - 1)));
return;
@ -902,10 +904,12 @@ public abstract class Contraption {
// for client sync, treat the updateTag as the data
if (updateTag != null) {
c.put("Data", updateTag);
}
// legacy: use full data if update tag is not available
if (updateTag == null && block.nbt() != null) {
} else if (block.nbt() != null) {
// an updateTag is saved for all BlockEntities, even when empty.
// this case means that the contraption was assembled pre-updateTags.
// in this case, we need to use the full BlockEntity data.
c.put("Data", block.nbt());
NBTHelper.putMarker(c, "Legacy");
}
} else {
// otherwise, write actual data as the data, save updateTag on its own
@ -960,29 +964,17 @@ public abstract class Contraption {
if (c.contains("UpdateTag", Tag.TAG_COMPOUND)) {
CompoundTag updateTag = c.getCompound("UpdateTag");
if (!updateTag.isEmpty()) {
// it's very important that empty tags are read here. see writeBlocksCompound
this.updateTags.put(info.pos(), updateTag);
}
}
if (!world.isClientSide)
return;
CompoundTag tag = info.nbt();
if (tag == null)
return;
tag.putInt("x", info.pos().getX());
tag.putInt("y", info.pos().getY());
tag.putInt("z", info.pos().getZ());
BlockEntity be = BlockEntity.loadStatic(info.pos(), info.state(), tag);
// create the BlockEntity client-side for rendering
BlockEntity be = readBlockEntity(world, info, c);
if (be == null)
return;
be.setLevel(world);
if (be instanceof KineticBlockEntity kbe)
kbe.setSpeed(0);
be.getBlockState();
presentBlockEntities.put(info.pos(), be);
modelData.put(info.pos(), be.getModelData());
@ -994,6 +986,47 @@ public abstract class Contraption {
});
}
@Nullable
private static BlockEntity readBlockEntity(Level level, StructureBlockInfo info, CompoundTag tag) {
BlockState state = info.state();
BlockPos pos = info.pos();
CompoundTag nbt = info.nbt();
if (tag.contains("Legacy")) {
// for contraptions that were assembled pre-updateTags, we need to use the old strategy.
if (nbt == null)
return null;
nbt.putInt("x", pos.getX());
nbt.putInt("y", pos.getY());
nbt.putInt("z", pos.getZ());
BlockEntity be = BlockEntity.loadStatic(pos, state, nbt);
postprocessReadBlockEntity(level, be);
return be;
}
if (!state.hasBlockEntity() || !(state.getBlock() instanceof EntityBlock entityBlock))
return null;
BlockEntity be = entityBlock.newBlockEntity(pos, state);
postprocessReadBlockEntity(level, be);
if (be != null && nbt != null) {
be.handleUpdateTag(nbt);
}
return be;
}
private static void postprocessReadBlockEntity(Level level, @Nullable BlockEntity be) {
if (be != null) {
be.setLevel(level);
if (be instanceof KineticBlockEntity kbe) {
kbe.setSpeed(0);
}
}
}
private static StructureBlockInfo readStructureBlockInfo(CompoundTag blockListEntry,
HashMapPalette<BlockState> palette) {
return new StructureBlockInfo(BlockPos.of(blockListEntry.getLong("Pos")),
@ -1021,7 +1054,7 @@ public abstract class Contraption {
for (boolean brittles : Iterate.trueAndFalse) {
for (Iterator<StructureBlockInfo> iterator = blocks.values()
.iterator(); iterator.hasNext();) {
.iterator(); iterator.hasNext(); ) {
StructureBlockInfo block = iterator.next();
if (brittles != BlockMovementChecks.isBrittle(block.state()))
continue;
@ -1147,7 +1180,7 @@ public abstract class Contraption {
state = state.setValue(SlidingDoorBlock.VISIBLE, !state.getValue(SlidingDoorBlock.OPEN))
.setValue(SlidingDoorBlock.POWERED, false);
// Stop Sculk shriekers from getting "stuck" if moved mid-shriek.
if(state.is(Blocks.SCULK_SHRIEKER)){
if (state.is(Blocks.SCULK_SHRIEKER)) {
state = Blocks.SCULK_SHRIEKER.defaultBlockState();
}
@ -1166,7 +1199,7 @@ public abstract class Contraption {
CompoundTag tag = block.nbt();
// Temporary fix: Calling load(CompoundTag tag) on a Sculk sensor causes it to not react to vibrations.
if(state.is(Blocks.SCULK_SENSOR) || state.is(Blocks.SCULK_SHRIEKER))
if (state.is(Blocks.SCULK_SENSOR) || state.is(Blocks.SCULK_SHRIEKER))
tag = null;
if (blockEntity != null)

View file

@ -771,15 +771,12 @@ public class ContraptionCollider {
MovementBehaviour movementBehaviour = MovementBehaviour.REGISTRY.get(blockInfo.state());
if (movementBehaviour != null) {
if (movementBehaviour instanceof BlockBreakingMovementBehaviour) {
BlockBreakingMovementBehaviour behaviour = (BlockBreakingMovementBehaviour) movementBehaviour;
if (movementBehaviour instanceof BlockBreakingMovementBehaviour behaviour) {
if (!behaviour.canBreak(world, colliderPos, collidedState) && !emptyCollider)
return true;
continue;
}
if (movementBehaviour instanceof HarvesterMovementBehaviour) {
HarvesterMovementBehaviour harvesterMovementBehaviour =
(HarvesterMovementBehaviour) movementBehaviour;
if (movementBehaviour instanceof HarvesterMovementBehaviour harvesterMovementBehaviour) {
if (!harvesterMovementBehaviour.isValidCrop(world, colliderPos, collidedState)
&& !harvesterMovementBehaviour.isValidOther(world, colliderPos, collidedState)
&& !emptyCollider)

View file

@ -49,9 +49,8 @@ public class ContraptionHandlerClient {
public static void preventRemotePlayersWalkingAnimations(PlayerTickEvent event) {
if (event.phase == Phase.START)
return;
if (!(event.player instanceof RemotePlayer))
if (!(event.player instanceof RemotePlayer remotePlayer))
return;
RemotePlayer remotePlayer = (RemotePlayer) event.player;
CompoundTag data = remotePlayer.getPersistentData();
if (!data.contains("LastOverrideLimbSwingUpdate"))
return;

View file

@ -144,11 +144,13 @@ public class ControlledContraptionEntity extends AbstractContraptionEntity {
}
@Override
public void teleportTo(double p_70634_1_, double p_70634_3_, double p_70634_5_) {}
public void teleportTo(double p_70634_1_, double p_70634_3_, double p_70634_5_) {
}
@Override
@OnlyIn(Dist.CLIENT)
public void lerpTo(double x, double y, double z, float yw, float pt, int inc, boolean t) {}
public void lerpTo(double x, double y, double z, float yw, float pt, int inc, boolean t) {
}
protected void tickContraption() {
angleDelta = angle - prevAngle;
@ -178,9 +180,8 @@ public class ControlledContraptionEntity extends AbstractContraptionEntity {
return true;
// Special activation timer for actors in the center of a bearing contraption
if (!(contraption instanceof BearingContraption))
if (!(contraption instanceof BearingContraption bc))
return false;
BearingContraption bc = (BearingContraption) contraption;
Direction facing = bc.getFacing();
Vec3 activeAreaOffset = actor.getActiveAreaOffset(context);
if (!activeAreaOffset.multiply(VecHelper.axisAlingedPlaneOf(Vec3.atLowerCornerOf(facing.getNormal())))

View file

@ -258,8 +258,7 @@ public class OrientedContraptionEntity extends AbstractContraptionEntity {
boolean rotationLock = false;
boolean pauseWhileRotating = false;
boolean wasStalled = isStalled();
if (contraption instanceof MountedContraption) {
MountedContraption mountedContraption = (MountedContraption) contraption;
if (contraption instanceof MountedContraption mountedContraption) {
rotationLock = mountedContraption.rotationMode == CartMovementMode.ROTATION_LOCKED;
pauseWhileRotating = mountedContraption.rotationMode == CartMovementMode.ROTATE_PAUSED;
}
@ -345,15 +344,13 @@ public class OrientedContraptionEntity extends AbstractContraptionEntity {
return false;
}
if (contraption instanceof StabilizedContraption) {
if (!(riding instanceof OrientedContraptionEntity))
if (contraption instanceof StabilizedContraption stabilized) {
if (!(riding instanceof OrientedContraptionEntity parent))
return false;
StabilizedContraption stabilized = (StabilizedContraption) contraption;
Direction facing = stabilized.getFacing();
if (facing.getAxis()
.isVertical())
return false;
OrientedContraptionEntity parent = (OrientedContraptionEntity) riding;
prevYaw = yaw;
yaw = AngleHelper.wrapAngle180(getInitialYaw() - parent.getInitialYaw()) - parent.getViewYRot(1);
return false;
@ -372,12 +369,10 @@ public class OrientedContraptionEntity extends AbstractContraptionEntity {
Vec3 motion = movementVector.normalize();
if (!rotationLock) {
if (riding instanceof AbstractMinecart) {
AbstractMinecart minecartEntity = (AbstractMinecart) riding;
if (riding instanceof AbstractMinecart minecartEntity) {
BlockPos railPosition = minecartEntity.getCurrentRailPosition();
BlockState blockState = level().getBlockState(railPosition);
if (blockState.getBlock() instanceof BaseRailBlock) {
BaseRailBlock abstractRailBlock = (BaseRailBlock) blockState.getBlock();
if (blockState.getBlock() instanceof BaseRailBlock abstractRailBlock) {
RailShape railDirection =
abstractRailBlock.getRailDirection(blockState, level(), railPosition, minecartEntity);
motion = VecHelper.project(motion, MinecartSim2020.getRailVec(railDirection));
@ -407,9 +402,8 @@ public class OrientedContraptionEntity extends AbstractContraptionEntity {
}
protected void powerFurnaceCartWithFuelFromStorage(Entity riding) {
if (!(riding instanceof MinecartFurnace))
if (!(riding instanceof MinecartFurnace furnaceCart))
return;
MinecartFurnace furnaceCart = (MinecartFurnace) riding;
// Notify to not trigger serialization side-effects
isSerializingFurnaceCart = true;

View file

@ -97,8 +97,7 @@ public class HarvesterMovementBehaviour implements MovementBehaviour {
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 (state.getBlock() instanceof CropBlock crop) {
if (harvestPartial)
return state != crop.getStateForAge(0) || !replant;
return crop.isMaxAge(state);
@ -107,9 +106,8 @@ public class HarvesterMovementBehaviour implements MovementBehaviour {
if (state.getCollisionShape(world, pos)
.isEmpty() || state.getBlock() instanceof CocoaBlock) {
for (Property<?> property : state.getProperties()) {
if (!(property instanceof IntegerProperty))
if (!(property instanceof IntegerProperty ageProperty))
continue;
IntegerProperty ageProperty = (IntegerProperty) property;
if (!property.getName()
.equals(BlockStateProperties.AGE_1.getName()))
continue;
@ -168,8 +166,7 @@ public class HarvesterMovementBehaviour implements MovementBehaviour {
}
Block block = state.getBlock();
if (block instanceof CropBlock) {
CropBlock crop = (CropBlock) block;
if (block instanceof CropBlock crop) {
return crop.getStateForAge(0);
}
if (block == Blocks.SWEET_BERRY_BUSH) {

View file

@ -120,8 +120,7 @@ public class PloughMovementBehaviour extends BlockBreakingMovementBehaviour {
protected void onBlockBroken(MovementContext context, BlockPos pos, BlockState brokenState) {
super.onBlockBroken(context, pos, brokenState);
if (brokenState.getBlock() == Blocks.SNOW && context.world instanceof ServerLevel) {
ServerLevel world = (ServerLevel) context.world;
if (brokenState.getBlock() == Blocks.SNOW && context.world instanceof ServerLevel world) {
brokenState.getDrops(new LootParams.Builder(world).withParameter(LootContextParams.BLOCK_STATE, brokenState)
.withParameter(LootContextParams.ORIGIN, Vec3.atCenterOf(pos))
.withParameter(LootContextParams.THIS_ENTITY, getPlayer(context))

View file

@ -49,7 +49,7 @@ public class RollerBlockEntity extends SmartBlockEntity {
@Override
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
behaviours.add(filtering = new FilteringBehaviour(this, new RollerValueBox(3)));
behaviours.add(mode = new ScrollOptionBehaviour<RollingMode>(RollingMode.class,
behaviours.add(mode = new ScrollOptionBehaviour<>(RollingMode.class,
CreateLang.translateDirect("contraptions.roller_mode"), this, new RollerValueBox(-3)));
filtering.setLabel(CreateLang.translateDirect("contraptions.mechanical_roller.pave_material"));

View file

@ -37,7 +37,7 @@ public class ControlsHandler {
}
public static void startControlling(AbstractContraptionEntity entity, BlockPos controllerLocalPos) {
entityRef = new WeakReference<AbstractContraptionEntity>(entity);
entityRef = new WeakReference<>(entity);
controlsPos = controllerLocalPos;
Minecraft.getInstance().player.displayClientMessage(

View file

@ -24,7 +24,7 @@ public class ControlsServerHandler {
public static void tick(LevelAccessor world) {
Map<UUID, ControlsContext> map = receivedInputs.get(world);
for (Iterator<Entry<UUID, ControlsContext>> iterator = map.entrySet()
.iterator(); iterator.hasNext();) {
.iterator(); iterator.hasNext(); ) {
Entry<UUID, ControlsContext> entry = iterator.next();
ControlsContext ctx = entry.getValue();
@ -35,7 +35,7 @@ public class ControlsServerHandler {
continue;
}
for (Iterator<ManuallyPressedKey> entryIterator = list.iterator(); entryIterator.hasNext();) {
for (Iterator<ManuallyPressedKey> entryIterator = list.iterator(); entryIterator.hasNext(); ) {
ManuallyPressedKey pressedKey = entryIterator.next();
pressedKey.decrement();
if (!pressedKey.isAlive())
@ -70,9 +70,9 @@ public class ControlsServerHandler {
ControlsContext ctx = map.computeIfAbsent(uniqueID, $ -> new ControlsContext(entity, controlsPos));
Collection<ManuallyPressedKey> list = ctx.keys;
WithNext: for (Integer activated : collect) {
for (Iterator<ManuallyPressedKey> iterator = list.iterator(); iterator.hasNext();) {
ManuallyPressedKey entry = iterator.next();
WithNext:
for (Integer activated : collect) {
for (ManuallyPressedKey entry : list) {
Integer inputType = entry.getSecond();
if (inputType.equals(activated)) {
if (!pressed)

View file

@ -291,10 +291,9 @@ public class ClockworkBearingBlockEntity extends KineticBlockEntity
@Override
public void attach(ControlledContraptionEntity contraption) {
if (!(contraption.getContraption() instanceof ClockworkContraption))
if (!(contraption.getContraption() instanceof ClockworkContraption cc))
return;
ClockworkContraption cc = (ClockworkContraption) contraption.getContraption();
setChanged();
Direction facing = getBlockState().getValue(BlockStateProperties.FACING);
BlockPos anchor = worldPosition.relative(facing, cc.offset + 1);
@ -380,9 +379,8 @@ public class ClockworkBearingBlockEntity extends KineticBlockEntity
@Override
public boolean isAttachedTo(AbstractContraptionEntity contraption) {
if (!(contraption.getContraption() instanceof ClockworkContraption))
if (!(contraption.getContraption() instanceof ClockworkContraption cc))
return false;
ClockworkContraption cc = (ClockworkContraption) contraption.getContraption();
if (cc.handType == HandType.HOUR)
return this.hourHand == contraption;
else

View file

@ -37,10 +37,12 @@ public class StabilizedBearingMovementBehaviour implements MovementBehaviour {
public ItemStack canBeDisabledVia(MovementContext context) {
return null;
}
@Override
@Override
public boolean disableBlockEntityRendering() {
return true;
}
@Override
@OnlyIn(Dist.CLIENT)
public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld,
@ -91,13 +93,11 @@ public class StabilizedBearingMovementBehaviour implements MovementBehaviour {
Direction.Axis axis = facing.getAxis();
AbstractContraptionEntity entity = context.contraption.entity;
if (entity instanceof ControlledContraptionEntity) {
ControlledContraptionEntity controlledCE = (ControlledContraptionEntity) entity;
if (entity instanceof ControlledContraptionEntity controlledCE) {
if (context.contraption.canBeStabilized(facing, context.localPos))
offset = -controlledCE.getAngle(renderPartialTicks);
} else if (entity instanceof OrientedContraptionEntity) {
OrientedContraptionEntity orientedCE = (OrientedContraptionEntity) entity;
} else if (entity instanceof OrientedContraptionEntity orientedCE) {
if (axis.isVertical())
offset = -orientedCE.getViewYRot(renderPartialTicks);
else {

View file

@ -108,8 +108,7 @@ public class ChassisBlockEntity extends SmartBlockEntity {
continue;
visited.add(current);
BlockEntity blockEntity = level.getBlockEntity(current);
if (blockEntity instanceof ChassisBlockEntity) {
ChassisBlockEntity chassis = (ChassisBlockEntity) blockEntity;
if (blockEntity instanceof ChassisBlockEntity chassis) {
collected.add(chassis);
visited.add(current);
chassis.addAttachedChasses(frontier, visited);
@ -126,7 +125,7 @@ public class ChassisBlockEntity extends SmartBlockEntity {
if (isRadial()) {
// Collect chain of radial chassis
for (int offset : new int[] { -1, 1 }) {
for (int offset : new int[]{-1, 1}) {
Direction direction = Direction.get(AxisDirection.POSITIVE, axis);
BlockPos currentPos = worldPosition.relative(direction, offset);
if (!level.isLoaded(currentPos))
@ -174,7 +173,7 @@ public class ChassisBlockEntity extends SmartBlockEntity {
Direction facing = Direction.get(AxisDirection.POSITIVE, axis);
int chassisRange = visualize ? currentlySelectedRange : getRange();
for (int offset : new int[] { 1, -1 }) {
for (int offset : new int[]{1, -1}) {
if (offset == -1)
facing = facing.getOpposite();
boolean sticky = state.getValue(block.getGlueableSide(state, facing));

View file

@ -92,7 +92,7 @@ public class ChassisRangeDisplay {
boolean hasWrench = AllItems.WRENCH.isIn(player.getMainHandItem());
for (Iterator<BlockPos> iterator = entries.keySet()
.iterator(); iterator.hasNext();) {
.iterator(); iterator.hasNext(); ) {
BlockPos pos = iterator.next();
Entry entry = entries.get(pos);
if (tickEntry(entry, hasWrench))
@ -100,7 +100,7 @@ public class ChassisRangeDisplay {
Outliner.getInstance().keep(entry.getOutlineKey());
}
for (Iterator<GroupEntry> iterator = groupEntries.iterator(); iterator.hasNext();) {
for (Iterator<GroupEntry> iterator = groupEntries.iterator(); iterator.hasNext(); ) {
GroupEntry group = iterator.next();
if (tickEntry(group, hasWrench)) {
iterator.remove();
@ -114,18 +114,16 @@ public class ChassisRangeDisplay {
return;
HitResult over = Minecraft.getInstance().hitResult;
if (!(over instanceof BlockHitResult))
if (!(over instanceof BlockHitResult ray))
return;
BlockHitResult ray = (BlockHitResult) over;
BlockPos pos = ray.getBlockPos();
BlockEntity blockEntity = world.getBlockEntity(pos);
if (blockEntity == null || blockEntity.isRemoved())
return;
if (!(blockEntity instanceof ChassisBlockEntity))
if (!(blockEntity instanceof ChassisBlockEntity chassisBlockEntity))
return;
boolean ctrl = AllKeys.ctrlDown();
ChassisBlockEntity chassisBlockEntity = (ChassisBlockEntity) blockEntity;
if (ctrl) {
GroupEntry existingGroupForPos = getExistingGroupForPos(pos);

View file

@ -3,7 +3,6 @@ package com.simibubi.create.content.contraptions.gantry;
import com.simibubi.create.AllBlockEntityTypes;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.kinetics.base.DirectionalAxisKineticBlock;
import com.simibubi.create.content.kinetics.base.IRotate;
import com.simibubi.create.content.kinetics.gantry.GantryShaftBlock;
import com.simibubi.create.foundation.block.IBE;
@ -108,9 +107,8 @@ public class GantryCarriageBlock extends DirectionalAxisKineticBlock implements
}
public static Axis getValidGantryShaftAxis(BlockState state) {
if (!(state.getBlock() instanceof GantryCarriageBlock))
if (!(state.getBlock() instanceof GantryCarriageBlock block))
return Axis.Y;
IRotate block = (IRotate) state.getBlock();
Axis rotationAxis = block.getRotationAxis(state);
Axis facingAxis = state.getValue(FACING)
.getAxis();

View file

@ -102,7 +102,7 @@ public class GantryContraptionEntity extends AbstractContraptionEntity {
BlockPos gantryShaftPos = BlockPos.containing(currentPosition).relative(facing.getOpposite());
BlockEntity be = level().getBlockEntity(gantryShaftPos);
if (!(be instanceof GantryShaftBlockEntity) || !AllBlocks.GANTRY_SHAFT.has(be.getBlockState())) {
if (!(be instanceof GantryShaftBlockEntity gantryShaftBlockEntity) || !AllBlocks.GANTRY_SHAFT.has(be.getBlockState())) {
if (!level().isClientSide) {
setContraptionMotion(Vec3.ZERO);
disassemble();
@ -112,7 +112,6 @@ public class GantryContraptionEntity extends AbstractContraptionEntity {
BlockState blockState = be.getBlockState();
Direction direction = blockState.getValue(GantryShaftBlock.FACING);
GantryShaftBlockEntity gantryShaftBlockEntity = (GantryShaftBlockEntity) be;
float pinionMovementSpeed = gantryShaftBlockEntity.getPinionMovementSpeed();
if (blockState.getValue(GantryShaftBlock.POWERED) || pinionMovementSpeed == 0) {
@ -185,11 +184,13 @@ public class GantryContraptionEntity extends AbstractContraptionEntity {
}
@Override
public void teleportTo(double p_70634_1_, double p_70634_3_, double p_70634_5_) {}
public void teleportTo(double p_70634_1_, double p_70634_3_, double p_70634_5_) {
}
@Override
@OnlyIn(Dist.CLIENT)
public void lerpTo(double x, double y, double z, float yw, float pt, int inc, boolean t) {}
public void lerpTo(double x, double y, double z, float yw, float pt, int inc, boolean t) {
}
@Override
protected void handleStallInformation(double x, double y, double z, float angle) {
@ -204,7 +205,8 @@ public class GantryContraptionEntity extends AbstractContraptionEntity {
@Override
@OnlyIn(Dist.CLIENT)
public void applyLocalTransforms(PoseStack matrixStack, float partialTicks) {}
public void applyLocalTransforms(PoseStack matrixStack, float partialTicks) {
}
public void updateClientMotion() {
float modifier = movementAxis.getAxisDirection()
@ -231,9 +233,8 @@ public class GantryContraptionEntity extends AbstractContraptionEntity {
@OnlyIn(Dist.CLIENT)
public static void handlePacket(GantryContraptionUpdatePacket packet) {
Entity entity = Minecraft.getInstance().level.getEntity(packet.entityID);
if (!(entity instanceof GantryContraptionEntity))
if (!(entity instanceof GantryContraptionEntity ce))
return;
GantryContraptionEntity ce = (GantryContraptionEntity) entity;
ce.axisMotion = packet.motion;
ce.clientOffsetDiff = packet.coord - ce.getAxisCoord();
ce.sequencedOffsetLimit = packet.sequenceLimit;

View file

@ -72,9 +72,9 @@ public class CouplingHandler {
Entity entity1 = world.getEntity(cartId1);
Entity entity2 = world.getEntity(cartId2);
if (!(entity1 instanceof AbstractMinecart))
if (!(entity1 instanceof AbstractMinecart cart1))
return false;
if (!(entity2 instanceof AbstractMinecart))
if (!(entity2 instanceof AbstractMinecart cart2))
return false;
String tooMany = "two_couplings_max";
@ -97,8 +97,6 @@ public class CouplingHandler {
return false;
}
AbstractMinecart cart1 = (AbstractMinecart) entity1;
AbstractMinecart cart2 = (AbstractMinecart) entity2;
UUID mainID = cart1.getUUID();
UUID connectedID = cart2.getUUID();
MinecartController mainController = CapabilityMinecartController.getIfPresent(world, mainID);

View file

@ -40,7 +40,7 @@ public class CouplingPhysics {
Couple<Vec3> corrections = Couple.create(null, null);
Couple<Float> maxSpeed = carts.map(AbstractMinecart::getMaxCartSpeedOnRail);
boolean firstLoop = true;
for (boolean current : new boolean[] { true, false, true }) {
for (boolean current : new boolean[]{true, false, true}) {
AbstractMinecart cart = carts.get(current);
AbstractMinecart otherCart = carts.get(!current);
@ -54,8 +54,7 @@ public class CouplingPhysics {
BlockPos railPosition = cart.getCurrentRailPosition();
BlockState railState = world.getBlockState(railPosition.above());
if (railState.getBlock() instanceof BaseRailBlock) {
BaseRailBlock block = (BaseRailBlock) railState.getBlock();
if (railState.getBlock() instanceof BaseRailBlock block) {
shape = block.getRailDirection(railState, world, railPosition, cart);
}
@ -108,9 +107,8 @@ public class CouplingPhysics {
if (minecart.level().getBlockState(pos).is(BlockTags.RAILS)) pos = pos.below();
BlockPos railPosition = pos;
BlockState railState = world.getBlockState(railPosition.above());
if (!(railState.getBlock() instanceof BaseRailBlock))
if (!(railState.getBlock() instanceof BaseRailBlock block))
return null;
BaseRailBlock block = (BaseRailBlock) railState.getBlock();
return block.getRailDirection(railState, world, railPosition, minecart);
});

View file

@ -33,9 +33,8 @@ public class MinecartCouplingItem extends Item {
@SubscribeEvent(priority = EventPriority.HIGH)
public static void handleInteractionWithMinecart(PlayerInteractEvent.EntityInteract event) {
Entity interacted = event.getTarget();
if (!(interacted instanceof AbstractMinecart))
if (!(interacted instanceof AbstractMinecart minecart))
return;
AbstractMinecart minecart = (AbstractMinecart) interacted;
Player player = event.getEntity();
if (player == null)
return;

View file

@ -218,9 +218,8 @@ public class MinecartController implements INBTSerializable<CompoundTag> {
if (passengers.isEmpty())
return;
Entity entity = passengers.get(0);
if (!(entity instanceof OrientedContraptionEntity))
if (!(entity instanceof OrientedContraptionEntity contraption))
return;
OrientedContraptionEntity contraption = (OrientedContraptionEntity) entity;
UUID couplingId = contraption.getCouplingId();
if (couplingId == cd.mainCartID) {
contraption.setCouplingId(cd.connectedCartID);
@ -394,7 +393,8 @@ public class MinecartController implements INBTSerializable<CompoundTag> {
Vec3 motion;
float yaw, pitch;
private StallData() {}
private StallData() {
}
StallData(AbstractMinecart entity) {
position = entity.position();

View file

@ -186,9 +186,8 @@ public class CartAssemblerBlockEntity extends SmartBlockEntity implements IDispl
return;
Entity entity = cart.getPassengers()
.get(0);
if (!(entity instanceof OrientedContraptionEntity))
if (!(entity instanceof OrientedContraptionEntity contraption))
return;
OrientedContraptionEntity contraption = (OrientedContraptionEntity) entity;
UUID couplingId = contraption.getCouplingId();
if (couplingId == null) {

View file

@ -212,20 +212,18 @@ public class MinecartContraptionItem extends Item {
return;
if (entity instanceof AbstractContraptionEntity)
entity = entity.getVehicle();
if (!(entity instanceof AbstractMinecart))
if (!(entity instanceof AbstractMinecart cart))
return;
if (!entity.isAlive())
return;
if (player instanceof DeployerFakePlayer dfp && dfp.onMinecartContraption)
return;
AbstractMinecart cart = (AbstractMinecart) entity;
Type type = cart.getMinecartType();
if (type != Type.RIDEABLE && type != Type.FURNACE && type != Type.CHEST)
return;
List<Entity> passengers = cart.getPassengers();
if (passengers.isEmpty() || !(passengers.get(0) instanceof OrientedContraptionEntity))
if (passengers.isEmpty() || !(passengers.get(0) instanceof OrientedContraptionEntity oce))
return;
OrientedContraptionEntity oce = (OrientedContraptionEntity) passengers.get(0);
Contraption contraption = oce.getContraption();
if (ContraptionMovementSetting.isNoPickup(contraption.getBlocks()

View file

@ -65,7 +65,7 @@ public class PistonExtensionPoleBlock extends WrenchableDirectionalBlock impleme
BlockPos pistonHead = null;
BlockPos pistonBase = null;
for (int modifier : new int[] { 1, -1 }) {
for (int modifier : new int[]{1, -1}) {
for (int offset = modifier; modifier * offset < MechanicalPistonBlock.maxAllowedPistonPoles(); offset +=
modifier) {
BlockPos currentPos = pos.relative(direction, offset);
@ -99,8 +99,7 @@ public class PistonExtensionPoleBlock extends WrenchableDirectionalBlock impleme
.setValue(MechanicalPistonBlock.STATE, PistonState.RETRACTED));
BlockEntity be = worldIn.getBlockEntity(basePos);
if (be instanceof MechanicalPistonBlockEntity) {
MechanicalPistonBlockEntity baseBE = (MechanicalPistonBlockEntity) be;
if (be instanceof MechanicalPistonBlockEntity baseBE) {
baseBE.offset = 0;
baseBE.onLengthBroken();
}
@ -169,7 +168,7 @@ public class PistonExtensionPoleBlock extends WrenchableDirectionalBlock impleme
return instance;
}
private PlacementHelper(){
private PlacementHelper() {
super(
AllBlocks.PISTON_EXTENSION_POLE::has,
state -> state.getValue(FACING).getAxis(),

View file

@ -40,8 +40,7 @@ public class PulleyBlock extends HorizontalAxisKineticBlock implements IBE<Pulle
private static void onRopeBroken(Level world, BlockPos pulleyPos) {
BlockEntity be = world.getBlockEntity(pulleyPos);
if (be instanceof PulleyBlockEntity) {
PulleyBlockEntity pulley = (PulleyBlockEntity) be;
if (be instanceof PulleyBlockEntity pulley) {
pulley.initialOffset = 0;
pulley.onLengthBroken();
}

View file

@ -78,7 +78,7 @@ public class PulleyBlockEntity extends LinearActuatorBlockEntity implements Thre
|| !sharedMirrorContraption.get()
.isAlive()) {
sharedMirrorContraption = null;
if (level.getBlockEntity(mirrorParent)instanceof PulleyBlockEntity pte && pte.movedContraption != null)
if (level.getBlockEntity(mirrorParent) instanceof PulleyBlockEntity pte && pte.movedContraption != null)
sharedMirrorContraption = new WeakReference<>(pte.movedContraption);
}
@ -255,8 +255,7 @@ public class PulleyBlockEntity extends LinearActuatorBlockEntity implements Thre
@Override
protected Vec3 toPosition(float offset) {
if (movedContraption.getContraption() instanceof PulleyContraption) {
PulleyContraption contraption = (PulleyContraption) movedContraption.getContraption();
if (movedContraption.getContraption() instanceof PulleyContraption contraption) {
return Vec3.atLowerCornerOf(contraption.anchor)
.add(0, contraption.getInitialOffset() - offset, 0);

View file

@ -74,6 +74,9 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> extends Abst
setEmbeddingMatrices(partialTick);
Contraption contraption = entity.getContraption();
// The contraption could be null if it wasn't synced (ex. too much data)
if (contraption == null)
return;
setupModel(contraption);

View file

@ -2,6 +2,7 @@ package com.simibubi.create.content.contraptions.sync;
import com.simibubi.create.content.contraptions.AbstractContraptionEntity;
import com.simibubi.create.foundation.networking.SimplePacketBase;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.network.FriendlyByteBuf;
@ -9,6 +10,7 @@ import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.phys.AABB;
import net.minecraftforge.common.ForgeMod;
import net.minecraftforge.network.NetworkEvent.Context;
@ -49,9 +51,8 @@ public class ContraptionInteractionPacket extends SimplePacketBase {
if (sender == null)
return;
Entity entityByID = sender.level().getEntity(target);
if (!(entityByID instanceof AbstractContraptionEntity))
if (!(entityByID instanceof AbstractContraptionEntity contraptionEntity))
return;
AbstractContraptionEntity contraptionEntity = (AbstractContraptionEntity) entityByID;
AABB bb = contraptionEntity.getBoundingBox();
double boundsExtra = Math.max(bb.getXsize(), bb.getYsize());
double d = sender.getAttribute(ForgeMod.BLOCK_REACH.get()).getValue() + 10 + boundsExtra;

View file

@ -55,9 +55,8 @@ public class ContraptionSeatMappingPacket extends SimplePacketBase {
public boolean handle(Context context) {
context.enqueueWork(() -> {
Entity entityByID = Minecraft.getInstance().level.getEntity(entityID);
if (!(entityByID instanceof AbstractContraptionEntity))
if (!(entityByID instanceof AbstractContraptionEntity contraptionEntity))
return;
AbstractContraptionEntity contraptionEntity = (AbstractContraptionEntity) entityByID;
if (dismountedID != -1) {
Entity dismountedByID = Minecraft.getInstance().level.getEntity(dismountedID);

View file

@ -14,6 +14,7 @@ import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.model.data.ModelData;
public class CopycatBarsModel extends CopycatModel {
@ -39,8 +40,7 @@ public class CopycatBarsModel extends CopycatModel {
if (side != null && (vertical || side.getAxis() == Axis.Y)) {
List<BakedQuad> templateQuads = model.getQuads(material, null, rand, wrappedData, renderType);
for (int i = 0; i < templateQuads.size(); i++) {
BakedQuad quad = templateQuads.get(i);
for (BakedQuad quad : templateQuads) {
if (quad.getDirection() != Direction.UP)
continue;
targetSprite = quad.getSprite();
@ -53,8 +53,7 @@ public class CopycatBarsModel extends CopycatModel {
List<BakedQuad> quads = new ArrayList<>();
for (int i = 0; i < superQuads.size(); i++) {
BakedQuad quad = superQuads.get(i);
for (BakedQuad quad : superQuads) {
TextureAtlasSprite original = quad.getSprite();
BakedQuad newQuad = BakedQuadHelper.clone(quad);
int[] vertexData = newQuad.getVertices();

View file

@ -39,10 +39,9 @@ public class BacktankArmorLayer<T extends LivingEntity, M extends EntityModel<T>
return;
M entityModel = getParentModel();
if (!(entityModel instanceof HumanoidModel))
if (!(entityModel instanceof HumanoidModel<?> model))
return;
HumanoidModel<?> model = (HumanoidModel<?>) entityModel;
VertexConsumer vc = buffer.getBuffer(Sheets.cutoutBlockSheet());
BlockState renderedState = item.getBlock().defaultBlockState()
.setValue(BacktankBlock.HORIZONTAL_FACING, Direction.SOUTH);
@ -86,11 +85,10 @@ public class BacktankArmorLayer<T extends LivingEntity, M extends EntityModel<T>
registerOn(renderer);
}
@SuppressWarnings({ "rawtypes", "unchecked" })
@SuppressWarnings({"rawtypes", "unchecked"})
public static void registerOn(EntityRenderer<?> entityRenderer) {
if (!(entityRenderer instanceof LivingEntityRenderer))
if (!(entityRenderer instanceof LivingEntityRenderer<?, ?> livingRenderer))
return;
LivingEntityRenderer<?, ?> livingRenderer = (LivingEntityRenderer<?, ?>) entityRenderer;
if (!(livingRenderer.getModel() instanceof HumanoidModel))
return;
BacktankArmorLayer<?, ?> layer = new BacktankArmorLayer<>(livingRenderer);

View file

@ -77,8 +77,7 @@ public class DivingBootsItem extends BaseArmorItem {
return false;
if (entity.getPose() == Pose.SWIMMING)
return false;
if (entity instanceof Player) {
Player playerEntity = (Player) entity;
if (entity instanceof Player playerEntity) {
if (playerEntity.getAbilities().flying)
return false;
}

View file

@ -15,6 +15,7 @@ import net.minecraft.client.particle.SpriteSet;
import net.minecraft.core.particles.ParticleOptions;
import net.minecraft.core.particles.ParticleType;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@ -22,12 +23,13 @@ import net.minecraftforge.api.distmarker.OnlyIn;
@MethodsReturnNonnullByDefault
public abstract class BasicParticleData<T extends Particle> implements ParticleOptions, ICustomParticleDataWithSprite<BasicParticleData<T>> {
public BasicParticleData() { }
public BasicParticleData() {
}
@Override
public Deserializer<BasicParticleData<T>> getDeserializer() {
BasicParticleData<T> data = this;
return new ParticleOptions.Deserializer<BasicParticleData<T>>() {
return new ParticleOptions.Deserializer<>() {
@Override
public BasicParticleData<T> fromCommand(ParticleType<BasicParticleData<T>> arg0, StringReader reader) {
return data;
@ -65,5 +67,6 @@ public abstract class BasicParticleData<T extends Particle> implements ParticleO
}
@Override
public void writeToNetwork(FriendlyByteBuf buffer) { }
public void writeToNetwork(FriendlyByteBuf buffer) {
}
}

View file

@ -1,9 +1,11 @@
package com.simibubi.create.content.equipment.blueprint;
import com.simibubi.create.foundation.networking.SimplePacketBase;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer;
import net.minecraftforge.network.NetworkEvent.Context;
public class BlueprintAssignCompleteRecipePacket extends SimplePacketBase {
@ -29,8 +31,7 @@ public class BlueprintAssignCompleteRecipePacket extends SimplePacketBase {
ServerPlayer player = context.getSender();
if (player == null)
return;
if (player.containerMenu instanceof BlueprintMenu) {
BlueprintMenu c = (BlueprintMenu) player.containerMenu;
if (player.containerMenu instanceof BlueprintMenu c) {
player.level()
.getRecipeManager()
.byKey(recipeID)

View file

@ -262,10 +262,9 @@ public class BlueprintEntity extends HangingEntity
@Override
public boolean skipAttackInteraction(Entity source) {
if (!(source instanceof Player) || level().isClientSide)
if (!(source instanceof Player player) || level().isClientSide)
return super.skipAttackInteraction(source);
Player player = (Player) source;
double attrib = player.getAttribute(ForgeMod.BLOCK_REACH.get())
.getValue() + (player.isCreative() ? 0 : -0.5F);
@ -297,8 +296,7 @@ public class BlueprintEntity extends HangingEntity
return;
playSound(SoundEvents.PAINTING_BREAK, 1.0F, 1.0F);
if (p_110128_1_ instanceof Player) {
Player playerentity = (Player) p_110128_1_;
if (p_110128_1_ instanceof Player playerentity) {
if (playerentity.getAbilities().instabuild)
return;
}
@ -372,7 +370,8 @@ public class BlueprintEntity extends HangingEntity
Map<Integer, ItemStack> craftingGrid = new HashMap<>();
boolean success = true;
Search: for (int i = 0; i < 9; i++) {
Search:
for (int i = 0; i < 9; i++) {
FilterItemStack requestedItem = FilterItemStack.of(items.getStackInSlot(i));
if (requestedItem.isEmpty()) {
craftingGrid.put(i, ItemStack.EMPTY);

View file

@ -1,10 +1,13 @@
package com.simibubi.create.content.equipment.blueprint;
import java.util.Collection;
import com.simibubi.create.AllItems;
import com.simibubi.create.content.logistics.filter.AttributeFilterMenu.WhitelistMode;
import com.simibubi.create.content.logistics.filter.FilterItem;
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttribute;
import com.simibubi.create.content.logistics.item.filter.attribute.attributes.InTagAttribute;
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttribute;import com.simibubi.create.content.logistics.item.filter.attribute.attributes.InTagAttribute;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.NonNullList;
@ -26,12 +29,11 @@ import net.minecraft.world.item.crafting.Ingredient.TagValue;
import net.minecraft.world.item.crafting.Ingredient.Value;
import net.minecraft.world.item.crafting.Recipe;
import net.minecraft.world.level.Level;
import net.minecraftforge.common.crafting.IShapedRecipe;
import net.minecraftforge.common.crafting.MultiItemValue;
import net.minecraftforge.items.ItemStackHandler;
import java.util.Collection;
public class BlueprintItem extends Item {
public BlueprintItem(Properties p_i48487_1_) {
@ -79,8 +81,7 @@ public class BlueprintItem extends Item {
inv.setStackInSlot(i, ItemStack.EMPTY);
inv.setStackInSlot(9, recipe.getResultItem(level.registryAccess()));
if (recipe instanceof IShapedRecipe) {
IShapedRecipe<?> shapedRecipe = (IShapedRecipe<?>) recipe;
if (recipe instanceof IShapedRecipe<?> shapedRecipe) {
for (int row = 0; row < shapedRecipe.getRecipeHeight(); row++)
for (int col = 0; col < shapedRecipe.getRecipeWidth(); col++)
inv.setStackInSlot(row * 3 + col,

View file

@ -1,8 +1,11 @@
package com.simibubi.create.content.equipment.blueprint;
import java.util.Optional;
import com.simibubi.create.AllMenuTypes;
import com.simibubi.create.content.equipment.blueprint.BlueprintEntity.BlueprintSection;
import com.simibubi.create.foundation.gui.menu.GhostItemMenu;
import net.minecraft.client.Minecraft;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.protocol.game.ClientboundContainerSetSlotPacket;
@ -18,14 +21,13 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.CraftingRecipe;
import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.level.Level;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.ItemStackHandler;
import net.minecraftforge.items.SlotItemHandler;
import java.util.Optional;
public class BlueprintMenu extends GhostItemMenu<BlueprintSection> {
public BlueprintMenu(MenuType<?> type, int id, Inventory inv, FriendlyByteBuf extraData) {
@ -129,9 +131,8 @@ public class BlueprintMenu extends GhostItemMenu<BlueprintSection> {
int entityID = extraData.readVarInt();
int section = extraData.readVarInt();
Entity entityByID = Minecraft.getInstance().level.getEntity(entityID);
if (!(entityByID instanceof BlueprintEntity))
if (!(entityByID instanceof BlueprintEntity blueprintEntity))
return null;
BlueprintEntity blueprintEntity = (BlueprintEntity) entityByID;
BlueprintSection blueprintSection = blueprintEntity.getSection(section);
return blueprintSection;
}

View file

@ -19,16 +19,16 @@ import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttribute
import com.simibubi.create.content.logistics.item.filter.attribute.attributes.InTagAttribute;
import com.simibubi.create.content.logistics.packager.InventorySummary;
import com.simibubi.create.content.logistics.tableCloth.BlueprintOverlayShopContext;
import com.simibubi.create.content.logistics.tableCloth.TableClothBlockEntity;
import com.simibubi.create.content.logistics.tableCloth.ShoppingListItem.ShoppingList;
import com.simibubi.create.content.logistics.tableCloth.TableClothBlockEntity;
import com.simibubi.create.content.trains.track.TrackPlacement.PlacementInfo;
import com.simibubi.create.foundation.gui.AllGuiTextures;
import net.createmod.catnip.gui.element.GuiGameElement;
import net.createmod.catnip.animation.AnimationTickHolder;
import net.createmod.catnip.data.Couple;
import net.createmod.catnip.data.Iterate;
import net.createmod.catnip.data.Pair;
import net.createmod.catnip.gui.element.GuiGameElement;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
@ -36,7 +36,6 @@ import net.minecraft.client.gui.screens.inventory.tooltip.TooltipRenderUtil;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.CraftingContainer;
import net.minecraft.world.item.Item;
@ -49,6 +48,7 @@ import net.minecraft.world.level.GameType;
import net.minecraft.world.phys.EntityHitResult;
import net.minecraft.world.phys.HitResult;
import net.minecraft.world.phys.HitResult.Type;
import net.minecraftforge.client.gui.overlay.ForgeGui;
import net.minecraftforge.client.gui.overlay.IGuiOverlay;
import net.minecraftforge.items.ItemHandlerHelper;
@ -92,10 +92,9 @@ public class BlueprintOverlayRenderer {
return;
EntityHitResult entityRay = (EntityHitResult) mouseOver;
if (!(entityRay.getEntity() instanceof BlueprintEntity))
if (!(entityRay.getEntity() instanceof BlueprintEntity blueprintEntity))
return;
BlueprintEntity blueprintEntity = (BlueprintEntity) entityRay.getEntity();
BlueprintSection sectionAt = blueprintEntity.getSectionAt(entityRay.getLocation()
.subtract(blueprintEntity.position()));
@ -241,7 +240,8 @@ public class BlueprintOverlayRenderer {
newlyAdded.clear();
newlyMissing.clear();
Search: for (int i = 0; i < 9; i++) {
Search:
for (int i = 0; i < 9; i++) {
FilterItemStack requestedItem = FilterItemStack.of(items.getStackInSlot(i));
if (requestedItem.isEmpty()) {
craftingGrid.put(i, ItemStack.EMPTY);

View file

@ -1,5 +1,9 @@
package com.simibubi.create.content.equipment.extendoGrip;
import java.util.UUID;
import java.util.function.Consumer;
import java.util.function.Supplier;
import com.google.common.base.Suppliers;
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.Multimap;
@ -9,6 +13,7 @@ import com.simibubi.create.content.equipment.armor.BacktankUtil;
import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.item.render.SimpleCustomRenderer;
import com.simibubi.create.infrastructure.config.AllConfigs;
import net.createmod.catnip.animation.AnimationTickHolder;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
@ -29,6 +34,7 @@ import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.EntityHitResult;
import net.minecraft.world.phys.HitResult.Type;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.event.InputEvent;
@ -46,10 +52,6 @@ import net.minecraftforge.eventbus.api.EventPriority;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
import java.util.UUID;
import java.util.function.Consumer;
import java.util.function.Supplier;
@EventBusSubscriber
public class ExtendoGripItem extends Item {
public static final int MAX_DAMAGE = 200;
@ -79,11 +81,9 @@ public class ExtendoGripItem extends Item {
@SubscribeEvent
public static void holdingExtendoGripIncreasesRange(LivingTickEvent event) {
if (!(event.getEntity() instanceof Player))
if (!(event.getEntity() instanceof Player player))
return;
Player player = (Player) event.getEntity();
CompoundTag persistentData = player.getPersistentData();
boolean inOff = AllItems.EXTENDO_GRIP.isIn(player.getOffhandItem());
boolean inMain = AllItems.EXTENDO_GRIP.isIn(player.getMainHandItem());
@ -245,9 +245,8 @@ public class ExtendoGripItem extends Item {
if (lastActiveDamageSource == null)
return;
Entity entity = lastActiveDamageSource.getDirectEntity();
if (!(entity instanceof Player))
if (!(entity instanceof Player player))
return;
Player player = (Player) entity;
if (!isHoldingExtendoGrip(player))
return;
event.setStrength(event.getStrength() + 2);

View file

@ -68,7 +68,7 @@ public class GoggleOverlayRenderer {
return;
HitResult objectMouseOver = mc.hitResult;
if (!(objectMouseOver instanceof BlockHitResult)) {
if (!(objectMouseOver instanceof BlockHitResult result)) {
lastHovered = null;
hoverTicks = 0;
return;
@ -82,7 +82,6 @@ public class GoggleOverlayRenderer {
return;
}
BlockHitResult result = (BlockHitResult) objectMouseOver;
ClientLevel world = mc.level;
BlockPos pos = result.getBlockPos();

View file

@ -1,10 +1,16 @@
package com.simibubi.create.content.equipment.potatoCannon;
import java.util.UUID;
import java.util.function.BiPredicate;
import java.util.function.Predicate;
import java.util.function.Supplier;
import com.mojang.authlib.GameProfile;
import com.mojang.datafixers.util.Pair;
import com.simibubi.create.AllItems;
import com.simibubi.create.Create;
import com.simibubi.create.foundation.mixin.accessor.FallingBlockEntityAccessor;
import net.createmod.catnip.data.WorldAttached;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
@ -34,17 +40,13 @@ import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.EntityHitResult;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.common.IPlantable;
import net.minecraftforge.common.util.FakePlayer;
import net.minecraftforge.event.ForgeEventFactory;
import net.minecraftforge.event.entity.EntityTeleportEvent;
import net.minecraftforge.registries.ForgeRegistries;
import java.util.UUID;
import java.util.function.BiPredicate;
import java.util.function.Predicate;
import java.util.function.Supplier;
public class BuiltinPotatoProjectileTypes {
private static final GameProfile ZOMBIE_CONVERTER_NAME =
@ -251,9 +253,7 @@ public class BuiltinPotatoProjectileTypes {
.sticky()
.preEntityHit(setFire(12))
.soundPitch(1.0f)
.registerAndAssign(AllItems.BLAZE_CAKE.get())
;
.registerAndAssign(AllItems.BLAZE_CAKE.get());
private static PotatoCannonProjectileType.Builder create(String name) {
return new PotatoCannonProjectileType.Builder(Create.asResource(name));
@ -378,9 +378,8 @@ public class BuiltinPotatoProjectileTypes {
Level world = entity.getCommandSenderWorld();
if (world.isClientSide)
return true;
if (!(entity instanceof LivingEntity))
if (!(entity instanceof LivingEntity livingEntity))
return false;
LivingEntity livingEntity = (LivingEntity) entity;
double entityX = livingEntity.getX();
double entityY = livingEntity.getY();
@ -415,6 +414,7 @@ public class BuiltinPotatoProjectileTypes {
};
}
public static void register() {}
public static void register() {
}
}

View file

@ -35,6 +35,7 @@ import net.minecraft.world.level.Level;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.EntityHitResult;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.entity.IEntityAdditionalSpawnData;
import net.minecraftforge.items.ItemHandlerHelper;
import net.minecraftforge.network.NetworkHooks;
@ -223,14 +224,12 @@ public class PotatoProjectileEntity extends AbstractHurtingProjectile implements
if (random.nextDouble() <= recoveryChance)
recoverItem();
if (!(target instanceof LivingEntity)) {
if (!(target instanceof LivingEntity livingentity)) {
playHitSound(level(), position());
kill();
return;
}
LivingEntity livingentity = (LivingEntity) target;
if (type.getReloadTicks() < 10)
livingentity.invulnerableTime = type.getReloadTicks() + 10;
@ -254,8 +253,7 @@ public class PotatoProjectileEntity extends AbstractHurtingProjectile implements
.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.ARROW_HIT_PLAYER, 0.0F));
}
if (onServer && owner instanceof ServerPlayer) {
ServerPlayer serverplayerentity = (ServerPlayer) owner;
if (onServer && owner instanceof ServerPlayer serverplayerentity) {
if (!target.isAlive() && target.getType()
.getCategory() == MobCategory.MONSTER || (target instanceof Player && target != owner))
AllAdvancements.POTATO_CANNON.awardTo(serverplayerentity);

View file

@ -9,6 +9,7 @@ import com.simibubi.create.foundation.item.CustomUseEffectsItem;
import com.simibubi.create.foundation.item.render.SimpleCustomRenderer;
import com.simibubi.create.foundation.mixin.accessor.LivingEntityAccessor;
import net.createmod.catnip.data.TriState;
import net.createmod.catnip.math.VecHelper;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.BlockPos;
@ -34,6 +35,7 @@ import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.HitResult;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
@ -74,9 +76,8 @@ public class SandPaperItem extends Item implements CustomUseEffectsItem {
}
HitResult raytraceresult = getPlayerPOVHitResult(worldIn, playerIn, ClipContext.Fluid.NONE);
if (!(raytraceresult instanceof BlockHitResult))
if (!(raytraceresult instanceof BlockHitResult ray))
return FAIL;
BlockHitResult ray = (BlockHitResult) raytraceresult;
Vec3 hitVec = ray.getLocation();
AABB bb = new AABB(hitVec, hitVec).inflate(1f);
@ -117,9 +118,8 @@ public class SandPaperItem extends Item implements CustomUseEffectsItem {
@Override
public ItemStack finishUsingItem(ItemStack stack, Level worldIn, LivingEntity entityLiving) {
if (!(entityLiving instanceof Player))
if (!(entityLiving instanceof Player player))
return stack;
Player player = (Player) entityLiving;
CompoundTag tag = stack.getOrCreateTag();
if (tag.contains("Polishing")) {
ItemStack toPolish = ItemStack.of(tag.getCompound("Polishing"));
@ -159,9 +159,8 @@ public class SandPaperItem extends Item implements CustomUseEffectsItem {
@Override
public void releaseUsing(ItemStack stack, Level worldIn, LivingEntity entityLiving, int timeLeft) {
if (!(entityLiving instanceof Player))
if (!(entityLiving instanceof Player player))
return;
Player player = (Player) entityLiving;
CompoundTag tag = stack.getOrCreateTag();
if (tag.contains("Polishing")) {
ItemStack toPolish = ItemStack.of(tag.getCompound("Polishing"));
@ -208,9 +207,9 @@ public class SandPaperItem extends Item implements CustomUseEffectsItem {
}
@Override
public Boolean shouldTriggerUseEffects(ItemStack stack, LivingEntity entity) {
public TriState shouldTriggerUseEffects(ItemStack stack, LivingEntity entity) {
// Trigger every tick so that we have more fine grain control over the animation
return true;
return TriState.TRUE;
}
@Override

View file

@ -20,8 +20,8 @@ import com.simibubi.create.foundation.item.render.SimpleCustomRenderer;
import com.simibubi.create.foundation.utility.BlockHelper;
import com.simibubi.create.infrastructure.config.AllConfigs;
import net.createmod.catnip.gui.ScreenOpener;
import net.createmod.catnip.data.Iterate;
import net.createmod.catnip.gui.ScreenOpener;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
@ -42,6 +42,7 @@ import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.material.FluidState;
import net.minecraft.world.phys.Vec3;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
@ -149,13 +150,13 @@ public class SymmetryWandItem extends Item {
playerIn.getCooldowns()
.addCooldown(this, 5);
}
return new InteractionResultHolder<ItemStack>(InteractionResult.SUCCESS, wand);
return new InteractionResultHolder<>(InteractionResult.SUCCESS, wand);
}
// No Shift -> Clear Mirror
wand.getTag()
.putBoolean(ENABLE, false);
return new InteractionResultHolder<ItemStack>(InteractionResult.SUCCESS, wand);
return new InteractionResultHolder<>(InteractionResult.SUCCESS, wand);
}
@OnlyIn(Dist.CLIENT)

View file

@ -16,9 +16,9 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour
import com.simibubi.create.foundation.blockEntity.behaviour.animatedContainer.AnimatedContainerBehaviour;
import com.simibubi.create.foundation.utility.ResetableLazy;
import net.createmod.catnip.math.VecHelper;
import net.createmod.catnip.animation.LerpedFloat;
import net.createmod.catnip.animation.LerpedFloat.Chaser;
import net.createmod.catnip.math.VecHelper;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
@ -36,6 +36,7 @@ import net.minecraft.world.item.ItemStack;
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.common.capabilities.Capability;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.items.IItemHandler;
@ -114,7 +115,7 @@ public class ToolboxBlockEntity extends SmartBlockEntity implements MenuProvider
boolean update = false;
for (Iterator<Entry<Integer, WeakHashMap<Player, Integer>>> toolboxSlots = connectedPlayers.entrySet()
.iterator(); toolboxSlots.hasNext();) {
.iterator(); toolboxSlots.hasNext(); ) {
Entry<Integer, WeakHashMap<Player, Integer>> toolboxSlotEntry = toolboxSlots.next();
WeakHashMap<Player, Integer> set = toolboxSlotEntry.getValue();
@ -124,7 +125,7 @@ public class ToolboxBlockEntity extends SmartBlockEntity implements MenuProvider
boolean clear = referenceItem.isEmpty();
for (Iterator<Entry<Player, Integer>> playerEntries = set.entrySet()
.iterator(); playerEntries.hasNext();) {
.iterator(); playerEntries.hasNext(); ) {
Entry<Player, Integer> playerEntry = playerEntries.next();
Player player = playerEntry.getKey();
@ -216,16 +217,11 @@ public class ToolboxBlockEntity extends SmartBlockEntity implements MenuProvider
Set<ServerPlayer> affected = new HashSet<>();
for (Iterator<Entry<Integer, WeakHashMap<Player, Integer>>> toolboxSlots = connectedPlayers.entrySet()
.iterator(); toolboxSlots.hasNext();) {
for (Entry<Integer, WeakHashMap<Player, Integer>> toolboxSlotEntry : connectedPlayers.entrySet()) {
Entry<Integer, WeakHashMap<Player, Integer>> toolboxSlotEntry = toolboxSlots.next();
WeakHashMap<Player, Integer> set = toolboxSlotEntry.getValue();
for (Iterator<Entry<Player, Integer>> playerEntries = set.entrySet()
.iterator(); playerEntries.hasNext();) {
Entry<Player, Integer> playerEntry = playerEntries.next();
for (Entry<Player, Integer> playerEntry : set.entrySet()) {
Player player = playerEntry.getKey();
int hotbarSlot = playerEntry.getValue();

View file

@ -12,6 +12,7 @@ import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraftforge.items.ItemHandlerHelper;
import net.minecraftforge.network.NetworkEvent.Context;
@ -43,9 +44,8 @@ public class ToolboxDisposeAllPacket extends SimplePacketBase {
if (player.distanceToSqr(toolboxPos.getX() + 0.5, toolboxPos.getY(), toolboxPos.getZ() + 0.5) > maxRange
* maxRange)
return;
if (!(blockEntity instanceof ToolboxBlockEntity))
if (!(blockEntity instanceof ToolboxBlockEntity toolbox))
return;
ToolboxBlockEntity toolbox = (ToolboxBlockEntity) blockEntity;
CompoundTag compound = player.getPersistentData()
.getCompound("CreateToolboxData");

View file

@ -10,6 +10,7 @@ import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraftforge.items.ItemHandlerHelper;
import net.minecraftforge.network.NetworkEvent.Context;
@ -59,7 +60,7 @@ public class ToolboxEquipPacket extends SimplePacketBase {
if (player.distanceToSqr(toolboxPos.getX() + 0.5, toolboxPos.getY(), toolboxPos.getZ() + 0.5) > maxRange
* maxRange)
return;
if (!(blockEntity instanceof ToolboxBlockEntity))
if (!(blockEntity instanceof ToolboxBlockEntity toolboxBlockEntity))
return;
ToolboxHandler.unequip(player, hotbarSlot, false);
@ -69,8 +70,6 @@ public class ToolboxEquipPacket extends SimplePacketBase {
return;
}
ToolboxBlockEntity toolboxBlockEntity = (ToolboxBlockEntity) blockEntity;
ItemStack playerStack = player.getInventory().getItem(hotbarSlot);
if (!playerStack.isEmpty() && !ToolboxInventory.canItemsShareCompartment(playerStack,
toolboxBlockEntity.inventory.filters.get(slot))) {

View file

@ -20,6 +20,7 @@ import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.network.PacketDistributor;
public class ToolboxHandler {
@ -44,12 +45,11 @@ public class ToolboxHandler {
return;
if (!(world instanceof ServerLevel))
return;
if (!(entity instanceof ServerPlayer))
if (!(entity instanceof ServerPlayer player))
return;
if (entity.tickCount % validationTimer != 0)
return;
ServerPlayer player = (ServerPlayer) entity;
if (!player.getPersistentData()
.contains("CreateToolboxData"))
return;
@ -128,8 +128,7 @@ public class ToolboxHandler {
int prevSlot = prevData.getInt("Slot");
BlockEntity prevBlockEntity = world.getBlockEntity(prevPos);
if (prevBlockEntity instanceof ToolboxBlockEntity) {
ToolboxBlockEntity toolbox = (ToolboxBlockEntity) prevBlockEntity;
if (prevBlockEntity instanceof ToolboxBlockEntity toolbox) {
toolbox.unequip(prevSlot, player, hotbarSlot, keepItems || !ToolboxHandler.withinRange(player, toolbox));
}
compound.remove(key);

View file

@ -19,6 +19,7 @@ import net.minecraft.world.inventory.MenuType;
import net.minecraft.world.inventory.Slot;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraftforge.items.SlotItemHandler;
public class ToolboxMenu extends MenuBase<ToolboxBlockEntity> {
@ -44,8 +45,7 @@ public class ToolboxMenu extends MenuBase<ToolboxBlockEntity> {
ClientLevel world = Minecraft.getInstance().level;
BlockEntity blockEntity = world.getBlockEntity(readBlockPos);
if (blockEntity instanceof ToolboxBlockEntity) {
ToolboxBlockEntity toolbox = (ToolboxBlockEntity) blockEntity;
if (blockEntity instanceof ToolboxBlockEntity toolbox) {
toolbox.readClient(readNbt);
return toolbox;
}
@ -130,8 +130,8 @@ public class ToolboxMenu extends MenuBase<ToolboxBlockEntity> {
int x = 79;
int y = 37;
int[] xOffsets = { x, x + 33, x + 66, x + 66 + 6, x + 66, x + 33, x, x - 6 };
int[] yOffsets = { y, y - 6, y, y + 33, y + 66, y + 66 + 6, y + 66, y + 33 };
int[] xOffsets = {x, x + 33, x + 66, x + 66 + 6, x + 66, x + 33, x, x - 6};
int[] yOffsets = {y, y - 6, y, y + 33, y + 66, y + 66 + 6, y + 66, y + 33};
for (int compartment = 0; compartment < 8; compartment++) {
int baseIndex = compartment * STACKS_PER_COMPARTMENT;

View file

@ -10,6 +10,7 @@ import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.eventbus.api.EventPriority;
import net.minecraftforge.eventbus.api.SubscribeEvent;
@ -40,12 +41,11 @@ public class WrenchEventHandler {
.getBlockState(event.getPos());
Block block = state.getBlock();
if (!(block instanceof IWrenchable))
if (!(block instanceof IWrenchable actor))
return;
BlockHitResult hitVec = event.getHitVec();
UseOnContext context = new UseOnContext(player, event.getHand(), hitVec);
IWrenchable actor = (IWrenchable) block;
InteractionResult result =
player.isShiftKeyDown() ? actor.onSneakWrenched(state, context) : actor.onWrenched(state, context);

View file

@ -22,6 +22,7 @@ import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
@ -44,13 +45,12 @@ public class WrenchItem extends Item {
.getBlockState(context.getClickedPos());
Block block = state.getBlock();
if (!(block instanceof IWrenchable)) {
if (!(block instanceof IWrenchable actor)) {
if (player.isShiftKeyDown() && canWrenchPickup(state))
return onItemUseOnOther(context);
return super.useOn(context);
}
IWrenchable actor = (IWrenchable) block;
if (player.isShiftKeyDown())
return actor.onSneakWrenched(state, context);
return actor.onWrenched(state, context);
@ -78,7 +78,7 @@ public class WrenchItem extends Item {
public static void wrenchInstaKillsMinecarts(AttackEntityEvent event) {
Entity target = event.getTarget();
if (!(target instanceof AbstractMinecart))
if (!(target instanceof AbstractMinecart minecart))
return;
Player player = event.getEntity();
ItemStack heldItem = player.getMainHandItem();
@ -86,7 +86,6 @@ public class WrenchItem extends Item {
return;
if (player.isCreative())
return;
AbstractMinecart minecart = (AbstractMinecart) target;
minecart.hurt(minecart.damageSources().playerAttack(player), 100);
}

View file

@ -32,6 +32,7 @@ import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.Vec3;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
import net.minecraftforge.common.capabilities.ForgeCapabilities;
public class ItemDrainBlock extends Block implements IWrenchable, IBE<ItemDrainBlockEntity> {
@ -73,14 +74,13 @@ public class ItemDrainBlock extends Block implements IWrenchable, IBE<ItemDrainB
@Override
public void updateEntityAfterFallOn(BlockGetter worldIn, Entity entityIn) {
super.updateEntityAfterFallOn(worldIn, entityIn);
if (!(entityIn instanceof ItemEntity))
if (!(entityIn instanceof ItemEntity itemEntity))
return;
if (!entityIn.isAlive())
return;
if (entityIn.level().isClientSide)
return;
ItemEntity itemEntity = (ItemEntity) entityIn;
DirectBeltInputBehaviour inputBehaviour =
BlockEntityBehaviour.get(worldIn, entityIn.blockPosition(), DirectBeltInputBehaviour.TYPE);
if (inputBehaviour == null)

View file

@ -13,6 +13,7 @@ import net.minecraft.core.particles.ParticleOptions;
import net.minecraft.core.particles.ParticleType;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.level.material.Fluids;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fluids.FluidStack;
@ -22,7 +23,8 @@ public class FluidParticleData implements ParticleOptions, ICustomParticleData<F
private ParticleType<FluidParticleData> type;
private FluidStack fluid;
public FluidParticleData() {}
public FluidParticleData() {
}
@SuppressWarnings("unchecked")
public FluidParticleData(ParticleType<?> type, FluidStack fluid) {
@ -68,7 +70,7 @@ public class FluidParticleData implements ParticleOptions, ICustomParticleData<F
.apply(i, fs -> new FluidParticleData(AllParticleTypes.FLUID_DRIP.get(), fs)));
public static final ParticleOptions.Deserializer<FluidParticleData> DESERIALIZER =
new ParticleOptions.Deserializer<FluidParticleData>() {
new ParticleOptions.Deserializer<>() {
// TODO Fluid particles on command
public FluidParticleData fromCommand(ParticleType<FluidParticleData> particleTypeIn, StringReader reader)

View file

@ -146,9 +146,8 @@ public class PumpBlock extends DirectionalKineticBlock
if (isPump(state) && isPump(oldState) && state.getValue(FACING) == oldState.getValue(FACING)
.getOpposite()) {
BlockEntity blockEntity = world.getBlockEntity(pos);
if (!(blockEntity instanceof PumpBlockEntity))
if (!(blockEntity instanceof PumpBlockEntity pump))
return;
PumpBlockEntity pump = (PumpBlockEntity) blockEntity;
pump.pressureUpdate = true;
}
}

View file

@ -21,10 +21,10 @@ import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import net.createmod.catnip.math.BlockFace;
import net.createmod.catnip.data.Couple;
import net.createmod.catnip.data.Iterate;
import net.createmod.catnip.data.Pair;
import net.createmod.catnip.math.BlockFace;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
@ -33,6 +33,7 @@ import net.minecraft.world.level.LevelAccessor;
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.common.capabilities.ForgeCapabilities;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.fluids.capability.IFluidHandler;
@ -275,8 +276,7 @@ public class PumpBlockEntity extends KineticBlockEntity {
// facing a pump
if (PumpBlock.isPump(connectedState) && connectedState.getValue(PumpBlock.FACING)
.getAxis() == face.getAxis() && blockEntity instanceof PumpBlockEntity) {
PumpBlockEntity pumpBE = (PumpBlockEntity) blockEntity;
.getAxis() == face.getAxis() && blockEntity instanceof PumpBlockEntity pumpBE) {
return pumpBE.isPullingOnSide(pumpBE.isFront(blockFace.getOppositeFace())) != pull;
}

View file

@ -114,6 +114,7 @@ public class SpoutBlockEntity extends SmartBlockEntity implements IHaveGoggleInf
// Process finished
ItemStack out = FillingBySpout.fillItem(level, requiredAmountForItem, transported.stack, fluid);
if (!out.isEmpty()) {
transported.clearFanProcessingData();
List<TransportedItemStack> outList = new ArrayList<>();
TransportedItemStack held = null;
TransportedItemStack result = transported.copy();

View file

@ -49,6 +49,7 @@ import net.minecraft.world.phys.Vec3;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.Shapes;
import net.minecraft.world.phys.shapes.VoxelShape;
import net.minecraftforge.common.capabilities.ForgeCapabilities;
import net.minecraftforge.common.util.ForgeSoundType;
import net.minecraftforge.common.util.LazyOptional;
@ -256,9 +257,8 @@ public class FluidTankBlock extends Block implements IWrenchable, IBE<FluidTankB
public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) {
if (state.hasBlockEntity() && (state.getBlock() != newState.getBlock() || !newState.hasBlockEntity())) {
BlockEntity be = world.getBlockEntity(pos);
if (!(be instanceof FluidTankBlockEntity))
if (!(be instanceof FluidTankBlockEntity tankBE))
return;
FluidTankBlockEntity tankBE = (FluidTankBlockEntity) be;
world.removeBlockEntity(pos);
ConnectivityHandler.splitMulti(tankBE);
}
@ -352,7 +352,7 @@ public class FluidTankBlock extends Block implements IWrenchable, IBE<FluidTankB
public static void updateBoilerState(BlockState pState, Level pLevel, BlockPos tankPos) {
BlockState tankState = pLevel.getBlockState(tankPos);
if (!(tankState.getBlock()instanceof FluidTankBlock tank))
if (!(tankState.getBlock() instanceof FluidTankBlock tank))
return;
FluidTankBlockEntity tankBE = tank.getBlockEntity(pLevel, tankPos);
if (tankBE == null)

View file

@ -15,8 +15,8 @@ import com.simibubi.create.foundation.fluid.FluidHelper;
import it.unimi.dsi.fastutil.PriorityQueue;
import it.unimi.dsi.fastutil.objects.ObjectHeapPriorityQueue;
import net.createmod.catnip.math.BBHelper;
import net.createmod.catnip.data.Iterate;
import net.createmod.catnip.math.BBHelper;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
@ -29,6 +29,7 @@ import net.minecraft.world.level.levelgen.structure.BoundingBox;
import net.minecraft.world.level.material.Fluid;
import net.minecraft.world.level.material.Fluids;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraftforge.fluids.FluidStack;
public class FluidDrainingBehaviour extends FluidManipulationBehaviour {
@ -106,8 +107,7 @@ public class FluidDrainingBehaviour extends FluidManipulationBehaviour {
&& blockState.getValue(BlockStateProperties.WATERLOGGED)) {
emptied = blockState.setValue(BlockStateProperties.WATERLOGGED, Boolean.valueOf(false));
fluid = Fluids.WATER;
} else if (blockState.getBlock() instanceof LiquidBlock) {
LiquidBlock flowingFluid = (LiquidBlock) blockState.getBlock();
} else if (blockState.getBlock() instanceof LiquidBlock flowingFluid) {
emptied = Blocks.AIR.defaultBlockState();
if (blockState.getValue(LiquidBlock.LEVEL) == 0)
fluid = flowingFluid.getFluid();

View file

@ -14,8 +14,8 @@ import com.simibubi.create.infrastructure.config.AllConfigs;
import it.unimi.dsi.fastutil.PriorityQueue;
import it.unimi.dsi.fastutil.objects.ObjectHeapPriorityQueue;
import net.createmod.catnip.math.BBHelper;
import net.createmod.catnip.data.Iterate;
import net.createmod.catnip.math.BBHelper;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.sounds.SoundEvents;
@ -203,8 +203,7 @@ public class FluidFillingBehaviour extends FluidManipulationBehaviour {
}
LevelTickAccess<Fluid> pendingFluidTicks = world.getFluidTicks();
if (pendingFluidTicks instanceof LevelTicks) {
LevelTicks<Fluid> serverTickList = (LevelTicks<Fluid>) pendingFluidTicks;
if (pendingFluidTicks instanceof LevelTicks<Fluid> serverTickList) {
serverTickList.clearArea(new BoundingBox(currentPos));
}

View file

@ -5,9 +5,9 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.infrastructure.config.AllConfigs;
import net.createmod.catnip.render.SuperByteBufferCache;
import net.createmod.catnip.math.VecHelper;
import net.createmod.catnip.outliner.Outliner;
import net.createmod.catnip.render.SuperByteBufferCache;
import net.createmod.catnip.theme.Color;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ClientLevel;
@ -76,10 +76,9 @@ public class KineticDebugger {
return null;
if (world == null)
return null;
if (!(obj instanceof BlockHitResult))
if (!(obj instanceof BlockHitResult ray))
return null;
BlockHitResult ray = (BlockHitResult) obj;
BlockEntity be = world.getBlockEntity(ray.getBlockPos());
if (!(be instanceof KineticBlockEntity))
return null;

View file

@ -47,11 +47,9 @@ public class RotationPropagator {
Block fromBlock = stateFrom.getBlock();
Block toBlock = stateTo.getBlock();
if (!(fromBlock instanceof IRotate && toBlock instanceof IRotate))
if (!(fromBlock instanceof IRotate definitionFrom && toBlock instanceof IRotate definitionTo))
return 0;
final IRotate definitionFrom = (IRotate) fromBlock;
final IRotate definitionTo = (IRotate) toBlock;
final BlockPos diff = to.getBlockPos()
.subtract(from.getBlockPos());
final Direction direction = Direction.getNearest(diff.getX(), diff.getY(), diff.getZ());
@ -157,7 +155,7 @@ public class RotationPropagator {
}
private static float getAxisModifier(KineticBlockEntity be, Direction direction) {
if (!(be.hasSource()||be.isSource()) || !(be instanceof DirectionalShaftHalvesBlockEntity))
if (!(be.hasSource() || be.isSource()) || !(be instanceof DirectionalShaftHalvesBlockEntity))
return 1;
Direction source = ((DirectionalShaftHalvesBlockEntity) be).getSourceFacing();
@ -321,10 +319,9 @@ public class RotationPropagator {
if (!(neighbourState.getBlock() instanceof IRotate))
continue;
BlockEntity blockEntity = worldIn.getBlockEntity(neighbourPos);
if (!(blockEntity instanceof KineticBlockEntity))
if (!(blockEntity instanceof KineticBlockEntity neighbourBE))
continue;
final KineticBlockEntity neighbourBE = (KineticBlockEntity) blockEntity;
if (!neighbourBE.hasSource() || !neighbourBE.source.equals(pos))
continue;
@ -350,9 +347,8 @@ public class RotationPropagator {
while (!frontier.isEmpty()) {
final BlockPos pos = frontier.remove(0);
BlockEntity blockEntity = world.getBlockEntity(pos);
if (!(blockEntity instanceof KineticBlockEntity))
if (!(blockEntity instanceof KineticBlockEntity currentBE))
continue;
final KineticBlockEntity currentBE = (KineticBlockEntity) blockEntity;
currentBE.removeSource();
currentBE.sendData();
@ -393,9 +389,8 @@ public class RotationPropagator {
return null;
BlockEntity neighbourBE = currentTE.getLevel()
.getBlockEntity(neighbourPos);
if (!(neighbourBE instanceof KineticBlockEntity))
if (!(neighbourBE instanceof KineticBlockEntity neighbourKBE))
return null;
KineticBlockEntity neighbourKBE = (KineticBlockEntity) neighbourBE;
if (!(neighbourKBE.getBlockState()
.getBlock() instanceof IRotate))
return null;
@ -439,9 +434,8 @@ public class RotationPropagator {
}
BlockState blockState = be.getBlockState();
if (!(blockState.getBlock() instanceof IRotate))
if (!(blockState.getBlock() instanceof IRotate block))
return neighbours;
IRotate block = (IRotate) blockState.getBlock();
return be.addPropagationLocations(block, blockState, neighbours);
}

View file

@ -38,9 +38,8 @@ public abstract class GeneratingKineticBlockEntity extends KineticBlockEntity {
public void setSource(BlockPos source) {
super.setSource(source);
BlockEntity blockEntity = level.getBlockEntity(source);
if (!(blockEntity instanceof KineticBlockEntity))
if (!(blockEntity instanceof KineticBlockEntity sourceBE))
return;
KineticBlockEntity sourceBE = (KineticBlockEntity) blockEntity;
if (reActivateSource && Math.abs(sourceBE.getSpeed()) >= Math.abs(getGeneratedSpeed()))
reActivateSource = false;
}

View file

@ -28,8 +28,7 @@ public abstract class KineticBlock extends Block implements IRotate {
// we can prevent a major re-propagation here
BlockEntity blockEntity = worldIn.getBlockEntity(pos);
if (blockEntity instanceof KineticBlockEntity) {
KineticBlockEntity kineticBlockEntity = (KineticBlockEntity) blockEntity;
if (blockEntity instanceof KineticBlockEntity kineticBlockEntity) {
kineticBlockEntity.preventSpeedUpdate = 0;
if (oldState.getBlock() != state.getBlock())
@ -66,9 +65,8 @@ public abstract class KineticBlock extends Block implements IRotate {
return;
BlockEntity blockEntity = worldIn.getBlockEntity(pos);
if (!(blockEntity instanceof KineticBlockEntity))
if (!(blockEntity instanceof KineticBlockEntity kbe))
return;
KineticBlockEntity kbe = (KineticBlockEntity) blockEntity;
if (kbe.preventSpeedUpdate > 0)
return;
@ -86,10 +84,9 @@ public abstract class KineticBlock extends Block implements IRotate {
return;
BlockEntity blockEntity = worldIn.getBlockEntity(pos);
if (!(blockEntity instanceof KineticBlockEntity))
if (!(blockEntity instanceof KineticBlockEntity kbe))
return;
KineticBlockEntity kbe = (KineticBlockEntity) blockEntity;
kbe.effects.queueRotationIndicators();
}

View file

@ -415,9 +415,9 @@ public class KineticBlockEntity extends SmartBlockEntity implements IHaveGoggleI
.forGoggles(tooltip);
Component hint = CreateLang.translateDirect("gui.contraptions.network_overstressed");
List<Component> cutString = TooltipHelper.cutTextComponent(hint, Palette.GRAY_AND_WHITE);
for (int i = 0; i < cutString.size(); i++)
for (Component component : cutString)
CreateLang.builder()
.add(cutString.get(i)
.add(component
.copy())
.forGoggles(tooltip);
return true;
@ -431,9 +431,9 @@ public class KineticBlockEntity extends SmartBlockEntity implements IHaveGoggleI
CreateLang.translateDirect("gui.contraptions.not_fast_enough", I18n.get(getBlockState().getBlock()
.getDescriptionId()));
List<Component> cutString = TooltipHelper.cutTextComponent(hint, Palette.GRAY_AND_WHITE);
for (int i = 0; i < cutString.size(); i++)
for (Component component : cutString)
CreateLang.builder()
.add(cutString.get(i)
.add(component
.copy())
.forGoggles(tooltip);
return true;

View file

@ -76,10 +76,9 @@ public class KineticEffectHandler {
BlockState state = kte.getBlockState();
Block block = state.getBlock();
if (!(block instanceof KineticBlock))
if (!(block instanceof KineticBlock kb))
return;
KineticBlock kb = (KineticBlock) block;
float radius1 = kb.getParticleInitialRadius();
float radius2 = kb.getParticleTargetRadius();

View file

@ -17,6 +17,7 @@ import net.minecraft.core.Direction.Axis;
import net.minecraft.core.particles.ParticleOptions;
import net.minecraft.core.particles.ParticleType;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@ -24,7 +25,7 @@ public class RotationIndicatorParticleData
implements ParticleOptions, ICustomParticleDataWithSprite<RotationIndicatorParticleData> {
// TODO 1.16 make this unnecessary
public static final PrimitiveCodec<Character> CHAR = new PrimitiveCodec<Character>() {
public static final PrimitiveCodec<Character> CHAR = new PrimitiveCodec<>() {
@Override
public <T> DataResult<Character> read(final DynamicOps<T> ops, final T input) {
return ops.getNumberValue(input)
@ -58,7 +59,7 @@ public class RotationIndicatorParticleData
.apply(i, RotationIndicatorParticleData::new));
public static final ParticleOptions.Deserializer<RotationIndicatorParticleData> DESERIALIZER =
new ParticleOptions.Deserializer<RotationIndicatorParticleData>() {
new ParticleOptions.Deserializer<>() {
public RotationIndicatorParticleData fromCommand(ParticleType<RotationIndicatorParticleData> particleTypeIn,
StringReader reader) throws CommandSyntaxException {
reader.expect(' ');

View file

@ -191,8 +191,7 @@ public class BeltBlock extends HorizontalKineticBlock
public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity entityIn) {
if (!canTransportObjects(state))
return;
if (entityIn instanceof Player) {
Player player = (Player) entityIn;
if (entityIn instanceof Player player) {
if (player.isShiftKeyDown() && !AllItems.CARDBOARD_BOOTS.isIn(player.getItemBySlot(EquipmentSlot.FEET)))
return;
if (player.getAbilities().flying)
@ -462,8 +461,7 @@ public class BeltBlock extends HorizontalKineticBlock
BlockEntity blockEntity = world.getBlockEntity(beltPos);
BlockState currentState = world.getBlockState(beltPos);
if (blockEntity instanceof BeltBlockEntity && AllBlocks.BELT.has(currentState)) {
BeltBlockEntity be = (BeltBlockEntity) blockEntity;
if (blockEntity instanceof BeltBlockEntity be && AllBlocks.BELT.has(currentState)) {
be.setController(currentPos);
be.beltLength = beltChain.size();
be.index = index;
@ -505,8 +503,7 @@ public class BeltBlock extends HorizontalKineticBlock
boolean hasPulley = false;
BlockEntity blockEntity = world.getBlockEntity(currentPos);
if (blockEntity instanceof BeltBlockEntity) {
BeltBlockEntity belt = (BeltBlockEntity) blockEntity;
if (blockEntity instanceof BeltBlockEntity belt) {
if (belt.isController())
belt.getInventory()
.ejectAll();

View file

@ -45,6 +45,7 @@ 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.client.model.data.ModelData;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.LazyOptional;
@ -472,8 +473,7 @@ public class BeltBlockEntity extends KineticBlockEntity {
return inserted;
BlockEntity teAbove = level.getBlockEntity(worldPosition.above());
if (teAbove instanceof BrassTunnelBlockEntity) {
BrassTunnelBlockEntity tunnelBE = (BrassTunnelBlockEntity) teAbove;
if (teAbove instanceof BrassTunnelBlockEntity tunnelBE) {
if (tunnelBE.hasDistributionBehaviour()) {
if (!tunnelBE.getStackToDistribute()
.isEmpty())

View file

@ -449,10 +449,9 @@ public class BeltSlicer {
public static void tickHoveringInformation() {
Minecraft mc = Minecraft.getInstance();
HitResult target = mc.hitResult;
if (target == null || !(target instanceof BlockHitResult))
if (target == null || !(target instanceof BlockHitResult result))
return;
BlockHitResult result = (BlockHitResult) target;
ClientLevel world = mc.level;
BlockPos pos = result.getBlockPos();
BlockState state = world.getBlockState(pos);

View file

@ -11,6 +11,7 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.items.ItemHandlerHelper;
public class BeltCrusherInteractionHandler {
@ -47,11 +48,9 @@ public class BeltCrusherInteractionHandler {
currentItem.beltPosition = crusherEntry;
BlockEntity be = world.getBlockEntity(crusherPos);
if (!(be instanceof CrushingWheelControllerBlockEntity))
if (!(be instanceof CrushingWheelControllerBlockEntity crusherBE))
return true;
CrushingWheelControllerBlockEntity crusherBE = (CrushingWheelControllerBlockEntity) be;
ItemStack toInsert = currentItem.stack.copy();
ItemStack remainder = ItemHandlerHelper.insertItemStacked(crusherBE.inventory, toInsert, false);

View file

@ -15,6 +15,7 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.items.ItemHandlerHelper;
public class BeltFunnelInteractionHandler {
@ -59,10 +60,9 @@ public class BeltFunnelInteractionHandler {
continue;
BlockEntity be = world.getBlockEntity(funnelPos);
if (!(be instanceof FunnelBlockEntity))
if (!(be instanceof FunnelBlockEntity funnelBE))
return true;
FunnelBlockEntity funnelBE = (FunnelBlockEntity) be;
InvManipulationBehaviour inserting = funnelBE.getBehaviour(InvManipulationBehaviour.TYPE);
FilteringBehaviour filtering = funnelBE.getBehaviour(FilteringBehaviour.TYPE);
@ -72,7 +72,7 @@ public class BeltFunnelInteractionHandler {
else
continue;
if(beltInventory.belt.invVersionTracker.stillWaiting(inserting))
if (beltInventory.belt.invVersionTracker.stillWaiting(inserting))
continue;
int amountToExtract = funnelBE.getAmountToExtract();

View file

@ -21,6 +21,7 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.items.ItemHandlerHelper;
public class BeltTunnelInteractionHandler {
@ -48,8 +49,7 @@ public class BeltTunnelInteractionHandler {
BeltTunnelBlockEntity nextTunnel = getTunnelOnSegment(beltInventory, upcomingSegment);
int transferred = current.stack.getCount();
if (nextTunnel instanceof BrassTunnelBlockEntity) {
BrassTunnelBlockEntity brassTunnel = (BrassTunnelBlockEntity) nextTunnel;
if (nextTunnel instanceof BrassTunnelBlockEntity brassTunnel) {
if (brassTunnel.hasDistributionBehaviour()) {
if (!brassTunnel.canTakeItems())
return true;
@ -125,9 +125,8 @@ public class BeltTunnelInteractionHandler {
return false;
BlockEntity be = belt.getLevel()
.getBlockEntity(pos);
if (be == null || !(be instanceof BrassTunnelBlockEntity))
if (be == null || !(be instanceof BrassTunnelBlockEntity tunnel))
return false;
BrassTunnelBlockEntity tunnel = (BrassTunnelBlockEntity) be;
return !tunnel.canInsert(movementDirection.getOpposite(), stack);
}

View file

@ -2,12 +2,15 @@ package com.simibubi.create.content.kinetics.belt.transport;
import java.util.Random;
import com.simibubi.create.AllRegistries;
import com.simibubi.create.content.kinetics.belt.BeltHelper;
import com.simibubi.create.content.kinetics.fan.processing.AllFanProcessingTypes;
import com.simibubi.create.content.kinetics.fan.processing.FanProcessingType;
import com.simibubi.create.content.logistics.box.PackageItem;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ItemStack;
public class TransportedItemStack implements Comparable<TransportedItemStack> {
@ -77,6 +80,16 @@ public class TransportedItemStack implements Comparable<TransportedItemStack> {
nbt.putInt("InSegment", insertedAt);
nbt.putInt("Angle", angle);
nbt.putInt("InDirection", insertedFrom.get3DDataValue());
if (processedBy != null && processedBy != AllFanProcessingTypes.NONE) {
ResourceLocation key = AllRegistries.FAN_PROCESSING_TYPE.get().getKey(processedBy);
if (key == null)
throw new IllegalArgumentException("Could not get id for FanProcessingType " + processedBy + "!");
nbt.putString("FanProcessingType", key.toString());
nbt.putInt("FanProcessingTime", processingTime);
}
if (locked)
nbt.putBoolean("Locked", locked);
if (lockedExternally)
@ -95,7 +108,18 @@ public class TransportedItemStack implements Comparable<TransportedItemStack> {
stack.insertedFrom = Direction.from3DDataValue(nbt.getInt("InDirection"));
stack.locked = nbt.getBoolean("Locked");
stack.lockedExternally = nbt.getBoolean("LockedExternally");
if (nbt.contains("FanProcessingType")) {
stack.processedBy = AllFanProcessingTypes.parseLegacy(nbt.getString("FanProcessingType"));
stack.processingTime = nbt.getInt("FanProcessingTime");
}
return stack;
}
public void clearFanProcessingData() {
processedBy = null;
processingTime = 0;
}
}

View file

@ -59,7 +59,7 @@ public class ChainConveyorPackage {
public void setBE(ChainConveyorBlockEntity ccbe) {
if (beReference == null || beReference.get() != ccbe)
beReference = new WeakReference<ChainConveyorBlockEntity>(ccbe);
beReference = new WeakReference<>(ccbe);
}
}

View file

@ -28,6 +28,7 @@ import net.minecraft.nbt.Tag;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.IItemHandlerModifiable;
import net.minecraftforge.items.ItemStackHandler;
@ -151,10 +152,9 @@ public class ConnectedInputHandler {
private static void modifyAndUpdate(Level world, BlockPos pos, Consumer<ConnectedInput> callback) {
BlockEntity blockEntity = world.getBlockEntity(pos);
if (!(blockEntity instanceof MechanicalCrafterBlockEntity))
if (!(blockEntity instanceof MechanicalCrafterBlockEntity crafter))
return;
MechanicalCrafterBlockEntity crafter = (MechanicalCrafterBlockEntity) blockEntity;
callback.accept(crafter.input);
crafter.setChanged();
crafter.connectivityChanged();

View file

@ -5,17 +5,16 @@ import com.simibubi.create.AllPartialModels;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.content.kinetics.base.GeneratingKineticBlockEntity;
import dev.engine_room.flywheel.api.model.Model;
import dev.engine_room.flywheel.lib.model.Models;
import net.createmod.catnip.animation.AnimationTickHolder;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.animation.AnimationTickHolder;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.level.block.Block;
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.api.distmarker.OnlyIn;
@ -49,9 +48,8 @@ public class HandCrankBlockEntity extends GeneratingKineticBlockEntity {
@Override
public float getGeneratedSpeed() {
Block block = getBlockState().getBlock();
if (!(block instanceof HandCrankBlock))
if (!(block instanceof HandCrankBlock crank))
return 0;
HandCrankBlock crank = (HandCrankBlock) block;
int speed = (inUse == 0 ? 0 : clockwise() ? -1 : 1) * crank.getRotationSpeed();
return convertToDirection(speed, getBlockState().getValue(HandCrankBlock.FACING));
}

View file

@ -17,8 +17,8 @@ import com.simibubi.create.foundation.sound.SoundScapes;
import com.simibubi.create.foundation.sound.SoundScapes.AmbienceGroup;
import com.simibubi.create.infrastructure.config.AllConfigs;
import net.createmod.catnip.nbt.NBTHelper;
import net.createmod.catnip.math.VecHelper;
import net.createmod.catnip.nbt.NBTHelper;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
@ -39,6 +39,7 @@ 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.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.capabilities.Capability;
@ -216,7 +217,7 @@ public class CrushingWheelControllerBlockEntity extends SmartBlockEntity {
if (level.isClientSide)
return;
if (!(processingEntity instanceof ItemEntity)) {
if (!(processingEntity instanceof ItemEntity itemEntity)) {
Vec3 entityOutPos = outPos.add(facing.getAxis() == Axis.X ? .5f * offset : 0f,
facing.getAxis() == Axis.Y ? .5f * offset : 0f, facing.getAxis() == Axis.Z ? .5f * offset : 0f);
int crusherDamage = AllConfigs.server().kinetics.crushingDamage.get();
@ -238,7 +239,6 @@ public class CrushingWheelControllerBlockEntity extends SmartBlockEntity {
return;
}
ItemEntity itemEntity = (ItemEntity) processingEntity;
itemEntity.setPickUpDelay(20);
if (facing.getAxis() == Axis.Y) {
if (processingEntity.getY() * -offset < (centerPos.y - .25f) * -offset) {
@ -301,8 +301,7 @@ public class CrushingWheelControllerBlockEntity extends SmartBlockEntity {
for (int roll = 0; roll < rolls; roll++) {
List<ItemStack> rolledResults = recipe.get()
.rollResults();
for (int i = 0; i < rolledResults.size(); i++) {
ItemStack stack = rolledResults.get(i);
for (ItemStack stack : rolledResults) {
ItemHelper.addToList(stack, list);
}
}

View file

@ -114,6 +114,8 @@ public class BeltDeployerCallbacks {
blockEntity.award(AllAdvancements.DEPLOYER);
transported.clearFanProcessingData();
TransportedItemStack left = transported.copy();
blockEntity.player.spawnedItemEffects = transported.stack.copy();
left.stack.shrink(1);

View file

@ -35,6 +35,7 @@ import net.minecraft.world.entity.monster.Creeper;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.UsernameCache;
@ -121,8 +122,7 @@ public class DeployerFakePlayer extends FakePlayer {
public static void deployerCollectsDropsFromKilledEntities(LivingDropsEvent event) {
DamageSource source = event.getSource();
Entity trueSource = source.getEntity();
if (trueSource != null && trueSource instanceof DeployerFakePlayer) {
DeployerFakePlayer fakePlayer = (DeployerFakePlayer) trueSource;
if (trueSource != null && trueSource instanceof DeployerFakePlayer fakePlayer) {
event.getDrops()
.forEach(stack -> fakePlayer.getInventory()
.placeItemBackInInventory(stack.getItem()));
@ -158,7 +158,7 @@ public class DeployerFakePlayer extends FakePlayer {
CKinetics.DeployerAggroSetting setting = AllConfigs.server().kinetics.ignoreDeployerAttacks.get();
switch(setting) {
switch (setting) {
case ALL -> event.setCanceled(true);
case CREEPERS -> {
if (mob instanceof Creeper)
@ -216,10 +216,12 @@ public class DeployerFakePlayer extends FakePlayer {
}
@Override
public void send(Packet<?> packetIn) {}
public void send(Packet<?> packetIn) {
}
@Override
public void send(Packet<?> p_243227_, @Nullable PacketSendListener p_243273_) {}
public void send(Packet<?> p_243227_, @Nullable PacketSendListener p_243273_) {
}
}
}

View file

@ -9,8 +9,6 @@ import java.util.stream.Collectors;
import javax.annotation.Nullable;
import net.minecraft.world.item.MobBucketItem;
import org.apache.commons.lang3.tuple.Pair;
import com.google.common.collect.Multimap;
@ -51,6 +49,7 @@ import net.minecraft.world.item.BucketItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.MobBucketItem;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.ClipContext;
@ -69,6 +68,7 @@ import net.minecraft.world.level.material.Fluids;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.common.ForgeHooks;
import net.minecraftforge.common.extensions.IForgeBaseRailBlock;
import net.minecraftforge.event.entity.player.PlayerInteractEvent.LeftClickBlock;
@ -113,8 +113,7 @@ public class DeployerHandler {
.getBlock() == ((BlockItem) held.getItem()).getBlock())
return false;
if (held.getItem() instanceof BucketItem) {
BucketItem bucketItem = (BucketItem) held.getItem();
if (held.getItem() instanceof BucketItem bucketItem) {
Fluid fluid = bucketItem.getFluid();
if (fluid != Fluids.EMPTY && world.getFluidState(targetPos)
.getType() == fluid)
@ -171,8 +170,7 @@ public class DeployerHandler {
if (cancelResult == null) {
if (entity.interact(player, hand)
.consumesAction()) {
if (entity instanceof AbstractVillager) {
AbstractVillager villager = ((AbstractVillager) entity);
if (entity instanceof AbstractVillager villager) {
if (villager.getTradingPlayer() instanceof DeployerFakePlayer)
villager.setTradingPlayer(null);
}

View file

@ -21,12 +21,12 @@ import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld;
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
import dev.engine_room.flywheel.lib.model.baked.PartialModel;
import dev.engine_room.flywheel.lib.transform.TransformStack;
import net.createmod.catnip.animation.AnimationTickHolder;
import net.createmod.catnip.math.AngleHelper;
import net.createmod.catnip.math.VecHelper;
import net.createmod.catnip.nbt.NBTHelper;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer;
import net.createmod.catnip.animation.AnimationTickHolder;
import net.createmod.catnip.nbt.NBTHelper;
import net.createmod.catnip.math.VecHelper;
import net.createmod.catnip.math.AngleHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.LevelRenderer;
import net.minecraft.client.renderer.MultiBufferSource;
@ -188,8 +188,7 @@ public class DeployerRenderer extends SafeBlockEntityRenderer<DeployerBlockEntit
m.pushPose();
Direction.Axis axis = Direction.Axis.Y;
if (context.state.getBlock() instanceof IRotate) {
IRotate def = (IRotate) context.state.getBlock();
if (context.state.getBlock() instanceof IRotate def) {
axis = def.getRotationAxis(context.state);
}

View file

@ -75,7 +75,7 @@ public class AirCurrent {
}
protected void tickAffectedEntities(Level world) {
for (Iterator<Entity> iterator = caughtEntities.iterator(); iterator.hasNext();) {
for (Iterator<Entity> iterator = caughtEntities.iterator(); iterator.hasNext(); ) {
Entity entity = iterator.next();
if (!entity.isAlive() || !entity.getBoundingBox()
.intersects(bounds) || isPlayerCreativeFlying(entity)) {
@ -129,8 +129,7 @@ public class AirCurrent {
}
public static boolean isPlayerCreativeFlying(Entity entity) {
if (entity instanceof Player) {
Player player = (Player) entity;
if (entity instanceof Player player) {
return player.isCreative() && player.getAbilities().flying;
}
return false;
@ -251,18 +250,18 @@ public class AirCurrent {
if (shapeDepth == Double.POSITIVE_INFINITY) {
continue;
}
return Math.min((float) (i + shapeDepth + 1/32d), max);
return Math.min((float) (i + shapeDepth + 1 / 32d), max);
}
return max;
}
private static final double[][] DEPTH_TEST_COORDINATES = {
{ 0.25, 0.25 },
{ 0.25, 0.75 },
{ 0.5, 0.5 },
{ 0.75, 0.25 },
{ 0.75, 0.75 }
{0.25, 0.25},
{0.25, 0.75},
{0.5, 0.5},
{0.75, 0.25},
{0.75, 0.75}
};
// Finds the maximum depth of the shape when traveling in the given direction.

View file

@ -14,6 +14,7 @@ import net.minecraft.core.Vec3i;
import net.minecraft.core.particles.ParticleOptions;
import net.minecraft.core.particles.ParticleType;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@ -26,7 +27,7 @@ public class AirFlowParticleData implements ParticleOptions, ICustomParticleData
Codec.INT.fieldOf("z").forGetter(p -> p.posZ))
.apply(i, AirFlowParticleData::new));
public static final ParticleOptions.Deserializer<AirFlowParticleData> DESERIALIZER = new ParticleOptions.Deserializer<AirFlowParticleData>() {
public static final ParticleOptions.Deserializer<AirFlowParticleData> DESERIALIZER = new ParticleOptions.Deserializer<>() {
public AirFlowParticleData fromCommand(ParticleType<AirFlowParticleData> particleTypeIn, StringReader reader)
throws CommandSyntaxException {
reader.expect(' ');

View file

@ -108,9 +108,8 @@ public class EncasedFanBlockEntity extends KineticBlockEntity implements IAirCur
.isVertical())
return;
BlockEntity poweredChute = level.getBlockEntity(worldPosition.relative(direction));
if (!(poweredChute instanceof ChuteBlockEntity))
if (!(poweredChute instanceof ChuteBlockEntity chuteBE))
return;
ChuteBlockEntity chuteBE = (ChuteBlockEntity) poweredChute;
if (direction == Direction.DOWN)
chuteBE.updatePull();
else

View file

@ -39,7 +39,8 @@ public class NozzleBlockEntity extends SmartBlockEntity {
}
@Override
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {}
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
}
@Override
protected void write(CompoundTag compound, boolean clientPacket) {
@ -86,7 +87,7 @@ public class NozzleBlockEntity extends SmartBlockEntity {
}
}
for (Iterator<Entity> iterator = pushingEntities.iterator(); iterator.hasNext();) {
for (Iterator<Entity> iterator = pushingEntities.iterator(); iterator.hasNext(); ) {
Entity entity = iterator.next();
Vec3 diff = entity.position()
.subtract(center);
@ -123,10 +124,9 @@ public class NozzleBlockEntity extends SmartBlockEntity {
private float calcRange() {
BlockEntity be = level.getBlockEntity(fanPos);
if (!(be instanceof IAirCurrentSource))
if (!(be instanceof IAirCurrentSource source))
return 0;
IAirCurrentSource source = (IAirCurrentSource) be;
if (source.getAirCurrent() == null)
return 0;
if (source.getSpeed() == 0)
@ -163,7 +163,7 @@ public class NozzleBlockEntity extends SmartBlockEntity {
pushingEntities.add(entity);
}
for (Iterator<Entity> iterator = pushingEntities.iterator(); iterator.hasNext();) {
for (Iterator<Entity> iterator = pushingEntities.iterator(); iterator.hasNext(); ) {
Entity entity = iterator.next();
if (entity.isAlive())
continue;
@ -172,7 +172,7 @@ public class NozzleBlockEntity extends SmartBlockEntity {
if (!pushing && pushingEntities.size() > 256 && !level.isClientSide) {
level.explode(null, center.x, center.y, center.z, 2, ExplosionInteraction.NONE);
for (Iterator<Entity> iterator = pushingEntities.iterator(); iterator.hasNext();) {
for (Iterator<Entity> iterator = pushingEntities.iterator(); iterator.hasNext(); ) {
Entity entity = iterator.next();
entity.discard();
iterator.remove();

View file

@ -60,7 +60,7 @@ import net.minecraftforge.items.wrapper.RecipeWrapper;
import net.minecraftforge.registries.DeferredRegister;
public class AllFanProcessingTypes {
private static final DeferredRegister<FanProcessingType> REGISTER = DeferredRegister.create(AllRegistries.Keys.FAN_PROCESSING_TYPES, Create.ID);
private static final DeferredRegister<FanProcessingType> REGISTER = DeferredRegister.create(AllRegistries.Keys.FAN_PROCESSING_TYPE, Create.ID);
public static final NoneType NONE = register("none", new NoneType());
public static final BlastingType BLASTING = register("blasting", new BlastingType());

View file

@ -95,7 +95,7 @@ public class FanProcessing {
CompoundTag processing = createData.getCompound("Processing");
if (!processing.contains("Type") || AllFanProcessingTypes.parseLegacy(processing.getString("Type")) != type) {
ResourceLocation key = AllRegistries.FAN_PROCESSING_TYPES.get().getKey(type);
ResourceLocation key = AllRegistries.FAN_PROCESSING_TYPE.get().getKey(type);
if (key == null)
throw new IllegalArgumentException("Could not get id for FanProcessingType " + type + "!");

View file

@ -36,7 +36,7 @@ public interface FanProcessingType {
if (id == null) {
return AllFanProcessingTypes.NONE;
}
FanProcessingType type = AllRegistries.FAN_PROCESSING_TYPES.get().getValue(id);
FanProcessingType type = AllRegistries.FAN_PROCESSING_TYPE.get().getValue(id);
if (type == null) {
return AllFanProcessingTypes.NONE;
}

View file

@ -3,12 +3,12 @@ package com.simibubi.create.content.kinetics.fan.processing;
import java.util.Collections;
import java.util.List;
import org.jetbrains.annotations.UnmodifiableView;
import com.simibubi.create.AllRegistries;
import it.unimi.dsi.fastutil.objects.ReferenceArrayList;
import org.jetbrains.annotations.UnmodifiableView;
public class FanProcessingTypeRegistry {
private static List<FanProcessingType> sortedTypes = null;
@UnmodifiableView
@ -19,7 +19,7 @@ public class FanProcessingTypeRegistry {
if (sortedTypes == null) {
sortedTypes = new ReferenceArrayList<>();
sortedTypes.addAll(AllRegistries.FAN_PROCESSING_TYPES.get().getValues());
sortedTypes.addAll(AllRegistries.FAN_PROCESSING_TYPE.get().getValues());
sortedTypes.sort((t1, t2) -> t2.getPriority() - t1.getPriority());
sortedTypesView = Collections.unmodifiableList(sortedTypes);

View file

@ -8,9 +8,9 @@ import com.simibubi.create.content.kinetics.base.IRotate;
import com.simibubi.create.foundation.block.IBE;
import net.createmod.catnip.data.Iterate;
import net.createmod.catnip.math.VecHelper;
import net.createmod.catnip.lang.Lang;
import net.createmod.catnip.levelWrappers.WrappedLevel;
import net.createmod.catnip.math.VecHelper;
import net.createmod.catnip.theme.Color;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
@ -121,9 +121,8 @@ public class GaugeBlock extends DirectionalAxisKineticBlock implements IBE<Gauge
@Override
public void animateTick(BlockState stateIn, Level worldIn, BlockPos pos, RandomSource rand) {
BlockEntity be = worldIn.getBlockEntity(pos);
if (be == null || !(be instanceof GaugeBlockEntity))
if (be == null || !(be instanceof GaugeBlockEntity gaugeBE))
return;
GaugeBlockEntity gaugeBE = (GaugeBlockEntity) be;
if (gaugeBE.dialTarget == 0)
return;
int color = gaugeBE.color;
@ -169,8 +168,7 @@ public class GaugeBlock extends DirectionalAxisKineticBlock implements IBE<Gauge
@Override
public int getAnalogOutputSignal(BlockState blockState, Level worldIn, BlockPos pos) {
BlockEntity be = worldIn.getBlockEntity(pos);
if (be instanceof GaugeBlockEntity) {
GaugeBlockEntity gaugeBlockEntity = (GaugeBlockEntity) be;
if (be instanceof GaugeBlockEntity gaugeBlockEntity) {
return Mth.ceil(Mth.clamp(gaugeBlockEntity.dialTarget * 14, 0, 15));
}
return 0;

View file

@ -4,14 +4,10 @@ import java.util.Optional;
import javax.annotation.Nullable;
import com.simibubi.create.AllRegistries;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import org.apache.commons.lang3.mutable.MutableBoolean;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllRegistries;
import com.simibubi.create.Create;
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
import com.simibubi.create.content.kinetics.belt.BeltBlock;
@ -44,7 +40,6 @@ import net.minecraft.core.Vec3i;
import net.minecraft.world.Containers;
import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.WorldlyContainer;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.RecordItem;
@ -61,12 +56,15 @@ import net.minecraft.world.level.block.entity.JukeboxBlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.ItemHandlerHelper;
import net.minecraftforge.items.wrapper.SidedInvWrapper;
import net.minecraftforge.registries.DeferredRegister;
public class AllArmInteractionPointTypes {
private static final DeferredRegister<ArmInteractionPointType> REGISTER = DeferredRegister.create(AllRegistries.Keys.ARM_INTERACTION_POINT_TYPES, Create.ID);
private static final DeferredRegister<ArmInteractionPointType> REGISTER = DeferredRegister.create(AllRegistries.Keys.ARM_INTERACTION_POINT_TYPE, Create.ID);
static {
register("basin", new BasinType());
@ -305,7 +303,8 @@ public class AllArmInteractionPointTypes {
}
@Override
public void cycleMode() {}
public void cycleMode() {
}
@Override
public ItemStack extract(int slot, int amount, boolean simulate) {
@ -406,9 +405,8 @@ public class AllArmInteractionPointTypes {
@Override
public ItemStack extract(int slot, int amount, boolean simulate) {
BlockEntity be = level.getBlockEntity(pos);
if (!(be instanceof MechanicalCrafterBlockEntity))
if (!(be instanceof MechanicalCrafterBlockEntity crafter))
return ItemStack.EMPTY;
MechanicalCrafterBlockEntity crafter = (MechanicalCrafterBlockEntity) be;
SmartInventory inventory = crafter.getInventory();
inventory.allowExtraction();
ItemStack extract = super.extract(slot, amount, simulate);
@ -500,8 +498,7 @@ public class AllArmInteractionPointTypes {
ItemStack insert = inserter.insert(stack);
if (!simulate && insert.getCount() != stack.getCount()) {
BlockEntity blockEntity = level.getBlockEntity(pos);
if (blockEntity instanceof FunnelBlockEntity) {
FunnelBlockEntity funnelBlockEntity = (FunnelBlockEntity) blockEntity;
if (blockEntity instanceof FunnelBlockEntity funnelBlockEntity) {
funnelBlockEntity.onTransfer(stack);
if (funnelBlockEntity.hasFlap())
funnelBlockEntity.flap(true);

View file

@ -115,7 +115,7 @@ public class ArmBlockEntity extends KineticBlockEntity implements TransformableB
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
super.addBehaviours(behaviours);
selectionMode = new ScrollOptionBehaviour<SelectionMode>(SelectionMode.class,
selectionMode = new ScrollOptionBehaviour<>(SelectionMode.class,
CreateLang.translateDirect("logistics.when_multiple_outputs_available"), this, new SelectionModeValueBox());
behaviours.add(selectionMode);
@ -262,7 +262,8 @@ public class ArmBlockEntity extends KineticBlockEntity implements TransformableB
if (scanRange > inputs.size())
scanRange = inputs.size();
InteractionPoints: for (int i = startIndex; i < scanRange; i++) {
InteractionPoints:
for (int i = startIndex; i < scanRange; i++) {
ArmInteractionPoint armInteractionPoint = inputs.get(i);
if (!armInteractionPoint.isValid())
continue;

Some files were not shown because too many files have changed in this diff Show more