diff --git a/.idea/icon.png b/.idea/icon.png
index 63aabf0ae..61de5f066 100644
Binary files a/.idea/icon.png and b/.idea/icon.png differ
diff --git a/README.md b/README.md
index ce6b55320..7091f49f9 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-
+
Create
diff --git a/gradle.properties b/gradle.properties
index 75b89dd1b..50be71712 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -23,7 +23,7 @@ use_parchment = true
# dependency versions
registrate_version = MC1.19-1.1.5
flywheel_minecraft_version = 1.19.2
-flywheel_version = 0.6.10-20
+flywheel_version = 0.6.10-21
jei_minecraft_version = 1.19.2
jei_version = 11.6.0.1024
curios_minecraft_version = 1.19.2
diff --git a/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyBlockEntity.java b/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyBlockEntity.java
index 2c425dd01..28bf7924d 100644
--- a/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyBlockEntity.java
+++ b/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyBlockEntity.java
@@ -18,6 +18,7 @@ import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.blockEntity.behaviour.CenteredSideValueBoxTransform;
import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform;
+import com.simibubi.create.foundation.utility.Iterate;
import com.simibubi.create.foundation.utility.NBTHelper;
import com.simibubi.create.infrastructure.config.AllConfigs;
@@ -194,28 +195,42 @@ public class PulleyBlockEntity extends LinearActuatorBlockEntity implements Thre
if (offset > 0) {
BlockPos magnetPos = worldPosition.below((int) offset);
FluidState ifluidstate = level.getFluidState(magnetPos);
- level.destroyBlock(magnetPos, level.getBlockState(magnetPos)
- .getCollisionShape(level, magnetPos)
- .isEmpty());
- level.setBlock(magnetPos, AllBlocks.PULLEY_MAGNET.getDefaultState()
- .setValue(BlockStateProperties.WATERLOGGED,
- Boolean.valueOf(ifluidstate.getType() == Fluids.WATER)),
- 66);
+ if (level.getBlockState(magnetPos)
+ .getDestroySpeed(level, magnetPos) != -1) {
+
+ level.destroyBlock(magnetPos, level.getBlockState(magnetPos)
+ .getCollisionShape(level, magnetPos)
+ .isEmpty());
+ level.setBlock(magnetPos, AllBlocks.PULLEY_MAGNET.getDefaultState()
+ .setValue(BlockStateProperties.WATERLOGGED,
+ Boolean.valueOf(ifluidstate.getType() == Fluids.WATER)),
+ 66);
+ }
}
boolean[] waterlog = new boolean[(int) offset];
- for (int i = 1; i <= ((int) offset) - 1; i++) {
- BlockPos ropePos = worldPosition.below(i);
- FluidState ifluidstate = level.getFluidState(ropePos);
- waterlog[i] = ifluidstate.getType() == Fluids.WATER;
- level.destroyBlock(ropePos, level.getBlockState(ropePos)
- .getCollisionShape(level, ropePos)
- .isEmpty());
+ for (boolean destroyPass : Iterate.trueAndFalse) {
+ for (int i = 1; i <= ((int) offset) - 1; i++) {
+ BlockPos ropePos = worldPosition.below(i);
+ if (level.getBlockState(ropePos)
+ .getDestroySpeed(level, ropePos) == -1)
+ continue;
+
+ if (destroyPass) {
+ FluidState ifluidstate = level.getFluidState(ropePos);
+ waterlog[i] = ifluidstate.getType() == Fluids.WATER;
+ level.destroyBlock(ropePos, level.getBlockState(ropePos)
+ .getCollisionShape(level, ropePos)
+ .isEmpty());
+ continue;
+ }
+
+ level.setBlock(worldPosition.below(i), AllBlocks.ROPE.getDefaultState()
+ .setValue(BlockStateProperties.WATERLOGGED, waterlog[i]), 66);
+ }
}
- for (int i = 1; i <= ((int) offset) - 1; i++)
- level.setBlock(worldPosition.below(i), AllBlocks.ROPE.getDefaultState()
- .setValue(BlockStateProperties.WATERLOGGED, waterlog[i]), 66);
+
}
if (movedContraption != null && mirrorParent == null)
diff --git a/src/main/java/com/simibubi/create/content/fluids/OpenEndedPipe.java b/src/main/java/com/simibubi/create/content/fluids/OpenEndedPipe.java
index ba9e3b3ff..dbece7c69 100644
--- a/src/main/java/com/simibubi/create/content/fluids/OpenEndedPipe.java
+++ b/src/main/java/com/simibubi/create/content/fluids/OpenEndedPipe.java
@@ -37,6 +37,7 @@ import net.minecraft.world.level.block.CampfireBlock;
import net.minecraft.world.level.block.LiquidBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
+import net.minecraft.world.level.material.FlowingFluid;
import net.minecraft.world.level.material.FluidState;
import net.minecraft.world.level.material.Fluids;
import net.minecraft.world.phys.AABB;
@@ -188,6 +189,8 @@ public class OpenEndedPipe extends FlowSource {
return false;
if (fluid.isEmpty())
return false;
+ if (!(fluid.getFluid() instanceof FlowingFluid))
+ return false;
if (!FluidHelper.hasBlockState(fluid.getFluid()))
return true;
diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlock.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlock.java
index 131dfe93f..2f0474a8c 100644
--- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlock.java
+++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlock.java
@@ -60,6 +60,7 @@ import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.RenderShape;
import net.minecraft.world.level.block.Rotation;
+import net.minecraft.world.level.block.SoundType;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
@@ -304,12 +305,24 @@ public class BeltBlock extends HorizontalKineticBlock
if (AllBlocks.BRASS_CASING.isIn(heldItem)) {
withBlockEntityDo(world, pos, be -> be.setCasingType(CasingType.BRASS));
updateCoverProperty(world, pos, world.getBlockState(pos));
+
+ SoundType soundType = AllBlocks.BRASS_CASING.getDefaultState()
+ .getSoundType(world, pos, player);
+ world.playSound(null, pos, soundType.getPlaceSound(), SoundSource.BLOCKS,
+ (soundType.getVolume() + 1.0F) / 2.0F, soundType.getPitch() * 0.8F);
+
return InteractionResult.SUCCESS;
}
if (AllBlocks.ANDESITE_CASING.isIn(heldItem)) {
withBlockEntityDo(world, pos, be -> be.setCasingType(CasingType.ANDESITE));
updateCoverProperty(world, pos, world.getBlockState(pos));
+
+ SoundType soundType = AllBlocks.ANDESITE_CASING.getDefaultState()
+ .getSoundType(world, pos, player);
+ world.playSound(null, pos, soundType.getPlaceSound(), SoundSource.BLOCKS,
+ (soundType.getVolume() + 1.0F) / 2.0F, soundType.getPitch() * 0.8F);
+
return InteractionResult.SUCCESS;
}
diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java
index 73e2c955d..1bd8d9628 100644
--- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java
+++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java
@@ -187,6 +187,8 @@ public class BeltBlockEntity extends KineticBlockEntity {
public LazyOptional getCapability(Capability cap, Direction side) {
if (!isItemHandlerCap(cap))
return super.getCapability(cap, side);
+ if (!BeltBlock.canTransportObjects(getBlockState()))
+ return super.getCapability(cap, side);
if (!isRemoved() && !itemHandler.isPresent())
initializeItemHandler();
return itemHandler.cast();
@@ -488,6 +490,8 @@ public class BeltBlockEntity extends KineticBlockEntity {
ItemStack inserted = transportedStack.stack;
ItemStack empty = ItemStack.EMPTY;
+ if (!BeltBlock.canTransportObjects(getBlockState()))
+ return inserted;
if (nextBeltController == null)
return inserted;
BeltInventory nextInventory = nextBeltController.getInventory();
diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerHandler.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerHandler.java
index 3d71d6ec7..5c46120f6 100644
--- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerHandler.java
+++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerHandler.java
@@ -300,8 +300,8 @@ public class DeployerHandler {
return;
if (useItem == DENY)
return;
- if (item instanceof BlockItem && !(item instanceof CartAssemblerBlockItem)
- && !clickedState.canBeReplaced(new BlockPlaceContext(itemusecontext)))
+ if (item instanceof CartAssemblerBlockItem
+ && clickedState.canBeReplaced(new BlockPlaceContext(itemusecontext)))
return;
// Reposition fire placement for convenience
diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerMovementBehaviour.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerMovementBehaviour.java
index 8e5c17140..4ced96591 100644
--- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerMovementBehaviour.java
+++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerMovementBehaviour.java
@@ -73,6 +73,7 @@ public class DeployerMovementBehaviour implements MovementBehaviour {
return;
activate(context, pos, player, mode);
+ checkForTrackPlacementAdvancement(context, player);
tryDisposeOfExcess(context);
context.stall = player.blockBreakingProgress != null;
}
@@ -80,9 +81,13 @@ public class DeployerMovementBehaviour implements MovementBehaviour {
public void activate(MovementContext context, BlockPos pos, DeployerFakePlayer player, Mode mode) {
Level world = context.world;
+ player.placedTracks = false;
+
FilterItemStack filter = context.getFilterFromBE();
- if (AllItems.SCHEMATIC.isIn(filter.item()))
+ if (AllItems.SCHEMATIC.isIn(filter.item())) {
activateAsSchematicPrinter(context, pos, player, world, filter.item());
+ return;
+ }
Vec3 facingVec = Vec3.atLowerCornerOf(context.state.getValue(DeployerBlock.FACING)
.getNormal());
@@ -101,13 +106,14 @@ public class DeployerMovementBehaviour implements MovementBehaviour {
player.setYRot(AbstractContraptionEntity.yawFromVector(facingVec));
player.setXRot(xRot);
- player.placedTracks = false;
DeployerHandler.activate(player, vec, pos, facingVec, mode);
+ }
+ protected void checkForTrackPlacementAdvancement(MovementContext context, DeployerFakePlayer player) {
if ((context.contraption instanceof MountedContraption || context.contraption instanceof CarriageContraption)
&& player.placedTracks && context.blockEntityData != null && context.blockEntityData.contains("Owner"))
- AllAdvancements.SELF_DEPLOYING.awardTo(world.getPlayerByUUID(context.blockEntityData.getUUID("Owner")));
+ AllAdvancements.SELF_DEPLOYING.awardTo(context.world.getPlayerByUUID(context.blockEntityData.getUUID("Owner")));
}
protected void activateAsSchematicPrinter(MovementContext context, BlockPos pos, DeployerFakePlayer player,
@@ -141,7 +147,7 @@ public class DeployerMovementBehaviour implements MovementBehaviour {
if (!context.contraption.hasUniversalCreativeCrate) {
IItemHandler itemHandler = context.contraption.getSharedInventory();
for (ItemRequirement.StackRequirement required : requiredItems) {
- ItemStack stack= ItemHelper
+ ItemStack stack = ItemHelper
.extract(itemHandler, required::matches, ExtractionCountMode.EXACTLY,
required.stack.getCount(), true);
if (stack.isEmpty())
@@ -155,8 +161,11 @@ public class DeployerMovementBehaviour implements MovementBehaviour {
CompoundTag data = BlockHelper.prepareBlockEntityData(blockState, schematicWorld.getBlockEntity(pos));
BlockSnapshot blocksnapshot = BlockSnapshot.create(world.dimension(), world, pos);
BlockHelper.placeSchematicBlock(world, blockState, pos, contextStack, data);
+
if (ForgeEventFactory.onBlockPlace(player, blocksnapshot, Direction.UP))
blocksnapshot.restore(true, false);
+ else if (AllBlocks.TRACK.has(blockState))
+ player.placedTracks = true;
}
@Override
diff --git a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/AllArmInteractionPointTypes.java b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/AllArmInteractionPointTypes.java
index 5504479d8..d03c2ab7d 100644
--- a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/AllArmInteractionPointTypes.java
+++ b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/AllArmInteractionPointTypes.java
@@ -10,6 +10,7 @@ import org.apache.commons.lang3.mutable.MutableBoolean;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.Create;
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
+import com.simibubi.create.content.kinetics.belt.BeltBlock;
import com.simibubi.create.content.kinetics.belt.BeltBlockEntity;
import com.simibubi.create.content.kinetics.belt.BeltHelper;
import com.simibubi.create.content.kinetics.belt.behaviour.TransportedItemStackHandlerBehaviour;
@@ -114,7 +115,7 @@ public class AllArmInteractionPointTypes {
@Override
public boolean canCreatePoint(Level level, BlockPos pos, BlockState state) {
return AllBlocks.BELT.has(state) && !(level.getBlockState(pos.above())
- .getBlock() instanceof BeltTunnelBlock);
+ .getBlock() instanceof BeltTunnelBlock) && BeltBlock.canTransportObjects(state);
}
@Override
diff --git a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/LargeWaterWheelBlock.java b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/LargeWaterWheelBlock.java
index 1d8ecc2c6..e04b3969a 100644
--- a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/LargeWaterWheelBlock.java
+++ b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/LargeWaterWheelBlock.java
@@ -18,6 +18,7 @@ import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.item.context.UseOnContext;
+import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.LevelReader;
@@ -168,5 +169,10 @@ public class LargeWaterWheelBlock extends RotatedPillarKineticBlock implements I
public static Couple getSpeedRange() {
return Couple.create(4, 4);
}
+
+ @Override
+ public boolean isFlammable(BlockState state, BlockGetter level, BlockPos pos, Direction direction) {
+ return false;
+ }
}
diff --git a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelBlock.java b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelBlock.java
index adb7e6423..6a520c7e3 100644
--- a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelBlock.java
+++ b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelBlock.java
@@ -18,6 +18,7 @@ import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.context.BlockPlaceContext;
+import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.LevelReader;
@@ -129,5 +130,10 @@ public class WaterWheelBlock extends DirectionalKineticBlock implements IBE getSpeedRange() {
return Couple.create(8, 8);
}
+
+ @Override
+ public boolean isFlammable(BlockState state, BlockGetter level, BlockPos pos, Direction direction) {
+ return false;
+ }
}
diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java
index b40d1d389..7402de458 100644
--- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java
+++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java
@@ -112,8 +112,10 @@ public class SchematicHandler implements IGuiOverlay {
if (!active || !stack.getTag()
.getString("File")
- .equals(displayedSchematic))
+ .equals(displayedSchematic)) {
+ renderers.forEach(r -> r.setActive(false));
init(player, stack);
+ }
if (!active)
return;
diff --git a/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayBlockEntity.java b/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayBlockEntity.java
index 06813e48e..dc014511c 100644
--- a/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayBlockEntity.java
+++ b/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayBlockEntity.java
@@ -111,7 +111,7 @@ public class FlapDisplayBlockEntity extends KineticBlockEntity {
if ((!level.isClientSide || !isRunning) && !isVirtual())
return;
int activeFlaps = 0;
- boolean instant = getSpeed() > 128;
+ boolean instant = Math.abs(getSpeed()) > 128;
for (FlapDisplayLayout line : lines)
for (FlapDisplaySection section : line.getSections())
activeFlaps += section.tick(instant);
diff --git a/src/main/java/com/simibubi/create/foundation/mixin/BlockItemMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/BlockItemMixin.java
new file mode 100644
index 000000000..a9c6d514b
--- /dev/null
+++ b/src/main/java/com/simibubi/create/foundation/mixin/BlockItemMixin.java
@@ -0,0 +1,29 @@
+package com.simibubi.create.foundation.mixin;
+
+import com.simibubi.create.content.kinetics.deployer.DeployerFakePlayer;
+
+import com.simibubi.create.foundation.mixin.accessor.UseOnContextAccessor;
+
+import net.minecraft.world.InteractionResult;
+import net.minecraft.world.item.BlockItem;
+
+import net.minecraft.world.item.context.BlockPlaceContext;
+
+import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.level.block.state.BlockState;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
+
+@Mixin(BlockItem.class)
+public class BlockItemMixin {
+ @Inject(method = "place", at = @At("HEAD"), cancellable = true)
+ private void create$fixDeployerPlacement(BlockPlaceContext pContext, CallbackInfoReturnable cir) {
+ BlockState state = pContext.getLevel().getBlockState(((UseOnContextAccessor) pContext).create$getHitResult().getBlockPos());
+ if (state != Blocks.AIR.defaultBlockState() && pContext.getPlayer() instanceof DeployerFakePlayer) {
+ cir.setReturnValue(InteractionResult.PASS);
+ }
+ }
+}
diff --git a/src/main/java/com/simibubi/create/foundation/mixin/accessor/UseOnContextAccessor.java b/src/main/java/com/simibubi/create/foundation/mixin/accessor/UseOnContextAccessor.java
new file mode 100644
index 000000000..87f2929e0
--- /dev/null
+++ b/src/main/java/com/simibubi/create/foundation/mixin/accessor/UseOnContextAccessor.java
@@ -0,0 +1,14 @@
+package com.simibubi.create.foundation.mixin.accessor;
+
+import net.minecraft.world.item.context.UseOnContext;
+
+import net.minecraft.world.phys.BlockHitResult;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Invoker;
+
+@Mixin(UseOnContext.class)
+public interface UseOnContextAccessor {
+ @Invoker("getHitResult")
+ BlockHitResult create$getHitResult();
+}
diff --git a/src/main/java/com/simibubi/create/infrastructure/debugInfo/DebugInformation.java b/src/main/java/com/simibubi/create/infrastructure/debugInfo/DebugInformation.java
index 8e0f216d4..cd76ea32e 100644
--- a/src/main/java/com/simibubi/create/infrastructure/debugInfo/DebugInformation.java
+++ b/src/main/java/com/simibubi/create/infrastructure/debugInfo/DebugInformation.java
@@ -78,7 +78,7 @@ public class DebugInformation {
.put("Flywheel Backend", () -> Backend.getBackendType().toString())
.put("OpenGL Renderer", GlUtil::getRenderer)
.put("OpenGL Version", GlUtil::getOpenGLVersion)
- .put("Graphics Mode", () -> Minecraft.getInstance().options.graphicsMode().toString())
+ .put("Graphics Mode", () -> Minecraft.getInstance().options.graphicsMode().get().getKey())
.buildTo(DebugInformation::registerClientInfo);
});
diff --git a/src/main/java/com/simibubi/create/infrastructure/gui/CreateMainMenuScreen.java b/src/main/java/com/simibubi/create/infrastructure/gui/CreateMainMenuScreen.java
index dbd8fa9f4..4268d09f2 100644
--- a/src/main/java/com/simibubi/create/infrastructure/gui/CreateMainMenuScreen.java
+++ b/src/main/java/com/simibubi/create/infrastructure/gui/CreateMainMenuScreen.java
@@ -108,6 +108,8 @@ public class CreateMainMenuScreen extends AbstractSimiScreen {
.render(ms);
ms.popPose();
}
+
+ RenderSystem.enableBlend();
ms.pushPose();
ms.translate(width / 2 - 32, 32, -10);
diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml
index c7beb95a1..cd2ef7994 100644
--- a/src/main/resources/META-INF/mods.toml
+++ b/src/main/resources/META-INF/mods.toml
@@ -5,12 +5,12 @@ license="MIT"
[[mods]]
modId="create"
-# The Implementation-Version property in the jar's MANIFEST.MF file will be used as the mod version at runtime
+# The Implementation-Version property in the jar's MANIFEST.MF file will be used as the mod version at runtime
version="${file.jarVersion}"
displayName="Create"
#updateJSONURL=""
displayURL="https://www.curseforge.com/minecraft/mc-mods/create"
-logoFile="logo.png"
+logoFile="icon.png"
#credits=""
authors="simibubi"
description='''
diff --git a/src/main/resources/assets/create/textures/gui/logo.png b/src/main/resources/assets/create/textures/gui/logo.png
index d3460172c..a3242f42f 100644
Binary files a/src/main/resources/assets/create/textures/gui/logo.png and b/src/main/resources/assets/create/textures/gui/logo.png differ
diff --git a/src/main/resources/create.mixins.json b/src/main/resources/create.mixins.json
index 4382bc142..f306d0df6 100644
--- a/src/main/resources/create.mixins.json
+++ b/src/main/resources/create.mixins.json
@@ -6,6 +6,7 @@
"compatibilityLevel": "JAVA_17",
"refmap": "create.refmap.json",
"mixins": [
+ "BlockItemMixin",
"ClientboundMapItemDataPacketMixin",
"ContraptionDriverInteractMixin",
"CustomItemUseEffectsMixin",
@@ -22,7 +23,8 @@
"accessor.LivingEntityAccessor",
"accessor.NbtAccounterAccessor",
"accessor.ServerLevelAccessor",
- "accessor.SystemReportAccessor"
+ "accessor.SystemReportAccessor",
+ "accessor.UseOnContextAccessor"
],
"client": [
"accessor.AgeableListModelAccessor",
diff --git a/src/main/resources/icon.png b/src/main/resources/icon.png
new file mode 100644
index 000000000..b9226b681
Binary files /dev/null and b/src/main/resources/icon.png differ
diff --git a/src/main/resources/logo.png b/src/main/resources/logo.png
deleted file mode 100644
index 612f3f8c4..000000000
Binary files a/src/main/resources/logo.png and /dev/null differ