From 7fd177a039a8e381461ede814eff8efa73784fb2 Mon Sep 17 00:00:00 2001 From: DrMangoTea Date: Sat, 9 Aug 2025 21:53:15 +0200 Subject: [PATCH] code optimization & retextures --- .../com/drmangotea/tfmg/base/MaterialSet.java | 1 - .../tfmg/base/TFMGBuilderTransformers.java | 6 +- .../tfmg/base/TFMGCreativeTabs.java | 26 +- .../drmangotea/tfmg/base/spark/BlueSpark.java | 119 +-------- .../tfmg/base/spark/BlueSparkRenderer.java | 58 ----- .../base/spark/ElectricSparkParticle.java | 2 + .../tfmg/base/spark/GreenSpark.java | 109 ++------ .../tfmg/base/spark/GreenSparkRenderer.java | 58 ----- .../tfmg/base/spark/LithiumSpark.java | 33 +++ .../com/drmangotea/tfmg/base/spark/Spark.java | 97 +++++-- .../tfmg/base/spark/SparkRenderer.java | 47 ++-- .../tfmg/content/decoration/LithiumBlock.java | 23 -- .../doors/TFMGSlidingDoorBlock.java | 216 +--------------- .../doors/TFMGSlidingDoorBlockEntity.java | 80 ------ .../doors/TFMGSlidingDoorRenderer.java | 9 +- .../flywheels/TFMGFlywheelBlockEntity.java | 56 ---- .../cogs/TFMGCogWheelBlock.java | 3 +- .../cogs/TFMGCogwheelBlockItem.java | 2 +- .../cogs/TFMGCogwheelRenderer.java | 2 +- .../cogs/TFMGCogwheelVisual.java | 5 +- .../cogs/TFMGEncasedCogRenderer.java | 3 +- .../cogs/TFMGEncasedCogVisual.java | 2 +- .../encased/TFMGEncasedCogwheelBlock.java | 4 +- .../encased/TFMGEncasedShaftBlock.java | 4 +- .../flywheels/TFMGFlywheelBlock.java | 11 +- .../flywheels/TFMGFlywheelRenderer.java | 16 +- .../flywheels/TFMGFlywheelVisual.java | 15 +- .../gearbox/SteelGearboxBlock.java | 7 +- .../gearbox/SteelVerticalGearboxItem.java | 2 +- .../large_generator/RotorVisual.java | 2 - .../thermite_grenades/ThermiteGrenade.java | 27 +- .../ThermiteGrenadeItem.java | 4 +- .../lithium_blade/LitLithiumBladeItem.java | 4 + .../weapons/lithium_blade/LithiumSpark.java | 128 --------- .../lithium_blade/LithiumSparkRenderer.java | 61 ----- .../accessor/FlywheelBlockEntityMixin.java | 18 ++ .../SlidingDoorBlockEntityAccessor.java | 18 ++ .../tfmg/registry/TFMGBlockEntities.java | 20 +- .../drmangotea/tfmg/registry/TFMGBlocks.java | 242 ++++++++---------- .../tfmg/registry/TFMGCableTypes.java | 20 +- .../tfmg/registry/TFMGEncasedBlocks.java | 9 +- .../tfmg/registry/TFMGEntityTypes.java | 19 +- .../drmangotea/tfmg/registry/TFMGItems.java | 2 +- .../tfmg/registry/TFMGPaletteStoneTypes.java | 6 +- .../tfmg/registry/TFMGSoundEvents.java | 6 +- .../models/block/large_steel_cogwheel.json | 61 ++--- .../tfmg/textures/block/capacitor_side.png | Bin 229 -> 0 bytes .../block/capacitor_side_connected.png | Bin 269 -> 0 bytes .../tfmg/textures/block/electric_casing.png | Bin 284 -> 0 bytes .../block/electric_casing_connected.png | Bin 4021 -> 0 bytes .../tfmg/textures/block/gasoline_engine.png | Bin 5089 -> 0 bytes .../textures/block/heavy_machinery_casing.png | Bin 252 -> 496 bytes .../heavy_machinery_casing_connected.png | Bin 2343 -> 2060 bytes .../textures/block/large_steel_cogwheel.png | Bin 456 -> 669 bytes .../textures/block/low_grade_fuel_engine.png | Bin 1344 -> 0 bytes .../block/{voltage_cube.png => ohms_law.png} | Bin .../tfmg/textures/block/steel_block.png | Bin 430 -> 496 bytes .../textures/block/steel_block_connected.png | Bin 3099 -> 1702 bytes .../tfmg/textures/block/steel_casing.png | Bin 509 -> 527 bytes .../textures/block/steel_casing_cable_hub.png | Bin 356 -> 547 bytes .../textures/block/steel_casing_connected.png | Bin 3980 -> 2055 bytes .../tfmg/textures/block/steel_coghweel.png | Bin 322 -> 605 bytes .../assets/tfmg/textures/entity/spark.png | Bin 0 -> 412 bytes src/main/resources/tfmg.mixins.json | 2 + 64 files changed, 450 insertions(+), 1215 deletions(-) delete mode 100644 src/main/java/com/drmangotea/tfmg/base/spark/BlueSparkRenderer.java delete mode 100644 src/main/java/com/drmangotea/tfmg/base/spark/GreenSparkRenderer.java create mode 100644 src/main/java/com/drmangotea/tfmg/base/spark/LithiumSpark.java delete mode 100644 src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorBlockEntity.java delete mode 100644 src/main/java/com/drmangotea/tfmg/content/decoration/flywheels/TFMGFlywheelBlockEntity.java rename src/main/java/com/drmangotea/tfmg/content/decoration/{ => kinetics}/cogs/TFMGCogWheelBlock.java (98%) rename src/main/java/com/drmangotea/tfmg/content/decoration/{ => kinetics}/cogs/TFMGCogwheelBlockItem.java (99%) rename src/main/java/com/drmangotea/tfmg/content/decoration/{ => kinetics}/cogs/TFMGCogwheelRenderer.java (97%) rename src/main/java/com/drmangotea/tfmg/content/decoration/{ => kinetics}/cogs/TFMGCogwheelVisual.java (94%) rename src/main/java/com/drmangotea/tfmg/content/decoration/{ => kinetics}/cogs/TFMGEncasedCogRenderer.java (97%) rename src/main/java/com/drmangotea/tfmg/content/decoration/{ => kinetics}/cogs/TFMGEncasedCogVisual.java (98%) rename src/main/java/com/drmangotea/tfmg/content/decoration/{ => kinetics}/encased/TFMGEncasedCogwheelBlock.java (98%) rename src/main/java/com/drmangotea/tfmg/content/decoration/{ => kinetics}/encased/TFMGEncasedShaftBlock.java (95%) rename src/main/java/com/drmangotea/tfmg/content/decoration/{ => kinetics}/flywheels/TFMGFlywheelBlock.java (88%) rename src/main/java/com/drmangotea/tfmg/content/decoration/{ => kinetics}/flywheels/TFMGFlywheelRenderer.java (66%) rename src/main/java/com/drmangotea/tfmg/content/decoration/{ => kinetics}/flywheels/TFMGFlywheelVisual.java (82%) rename src/main/java/com/drmangotea/tfmg/content/decoration/{ => kinetics}/gearbox/SteelGearboxBlock.java (87%) rename src/main/java/com/drmangotea/tfmg/content/decoration/{ => kinetics}/gearbox/SteelVerticalGearboxItem.java (97%) delete mode 100644 src/main/java/com/drmangotea/tfmg/content/items/weapons/lithium_blade/LithiumSpark.java delete mode 100644 src/main/java/com/drmangotea/tfmg/content/items/weapons/lithium_blade/LithiumSparkRenderer.java create mode 100644 src/main/java/com/drmangotea/tfmg/mixin/accessor/FlywheelBlockEntityMixin.java create mode 100644 src/main/java/com/drmangotea/tfmg/mixin/accessor/SlidingDoorBlockEntityAccessor.java delete mode 100644 src/main/resources/assets/tfmg/textures/block/capacitor_side.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/capacitor_side_connected.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/electric_casing.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/electric_casing_connected.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/gasoline_engine.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/low_grade_fuel_engine.png rename src/main/resources/assets/tfmg/textures/block/{voltage_cube.png => ohms_law.png} (100%) create mode 100644 src/main/resources/assets/tfmg/textures/entity/spark.png diff --git a/src/main/java/com/drmangotea/tfmg/base/MaterialSet.java b/src/main/java/com/drmangotea/tfmg/base/MaterialSet.java index aa14d8d5..199334d6 100644 --- a/src/main/java/com/drmangotea/tfmg/base/MaterialSet.java +++ b/src/main/java/com/drmangotea/tfmg/base/MaterialSet.java @@ -4,7 +4,6 @@ import com.tterrag.registrate.util.entry.BlockEntry; public class MaterialSet { - public BlockEntry block; public BlockEntry slab; public BlockEntry stairs; diff --git a/src/main/java/com/drmangotea/tfmg/base/TFMGBuilderTransformers.java b/src/main/java/com/drmangotea/tfmg/base/TFMGBuilderTransformers.java index 8440e268..852d89e0 100644 --- a/src/main/java/com/drmangotea/tfmg/base/TFMGBuilderTransformers.java +++ b/src/main/java/com/drmangotea/tfmg/base/TFMGBuilderTransformers.java @@ -8,9 +8,9 @@ import com.drmangotea.tfmg.config.TFMGStress; import com.drmangotea.tfmg.content.decoration.FrameBlock; import com.drmangotea.tfmg.content.decoration.TrussBlock; import com.drmangotea.tfmg.content.decoration.doors.TFMGSlidingDoorBlock; -import com.drmangotea.tfmg.content.decoration.encased.TFMGEncasedCogwheelBlock; -import com.drmangotea.tfmg.content.decoration.encased.TFMGEncasedShaftBlock; -import com.drmangotea.tfmg.content.decoration.flywheels.TFMGFlywheelBlock; +import com.drmangotea.tfmg.content.decoration.kinetics.encased.TFMGEncasedCogwheelBlock; +import com.drmangotea.tfmg.content.decoration.kinetics.encased.TFMGEncasedShaftBlock; +import com.drmangotea.tfmg.content.decoration.kinetics.flywheels.TFMGFlywheelBlock; import com.drmangotea.tfmg.content.electricity.connection.copycat_cable.CopycatCableBlock; import com.drmangotea.tfmg.content.electricity.lights.neon_tube.NeonTubeBlock; import com.drmangotea.tfmg.registry.TFMGBlocks; diff --git a/src/main/java/com/drmangotea/tfmg/base/TFMGCreativeTabs.java b/src/main/java/com/drmangotea/tfmg/base/TFMGCreativeTabs.java index 7899a8e5..8d1d5e59 100644 --- a/src/main/java/com/drmangotea/tfmg/base/TFMGCreativeTabs.java +++ b/src/main/java/com/drmangotea/tfmg/base/TFMGCreativeTabs.java @@ -1,50 +1,26 @@ package com.drmangotea.tfmg.base; -import com.drmangotea.tfmg.TFMG; -import com.drmangotea.tfmg.content.decoration.encased.TFMGEncasedCogwheelBlock; +import com.drmangotea.tfmg.content.decoration.kinetics.encased.TFMGEncasedCogwheelBlock; import com.drmangotea.tfmg.content.machinery.misc.winding_machine.SpoolItem; import com.drmangotea.tfmg.registry.TFMGBlocks; import com.drmangotea.tfmg.registry.TFMGDataComponents; -import com.drmangotea.tfmg.registry.TFMGEncasedBlocks; import com.drmangotea.tfmg.registry.TFMGItems; import com.simibubi.create.*; -import com.simibubi.create.content.contraptions.actors.seat.SeatBlock; -import com.simibubi.create.content.equipment.armor.BacktankUtil; -import com.simibubi.create.content.equipment.toolbox.ToolboxBlock; -import com.simibubi.create.content.kinetics.crank.ValveHandleBlock; -import com.simibubi.create.content.logistics.box.PackageStyles; -import com.simibubi.create.content.logistics.packagePort.postbox.PostboxBlock; -import com.simibubi.create.content.logistics.tableCloth.TableClothBlock; import com.simibubi.create.content.processing.sequenced.SequencedAssemblyItem; import com.simibubi.create.foundation.data.CreateRegistrate; -import com.simibubi.create.foundation.item.TagDependentIngredientItem; -import com.tterrag.registrate.util.entry.BlockEntry; -import com.tterrag.registrate.util.entry.ItemEntry; -import com.tterrag.registrate.util.entry.ItemProviderEntry; import com.tterrag.registrate.util.entry.RegistryEntry; -import it.unimi.dsi.fastutil.objects.*; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.entity.ItemRenderer; -import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.world.item.*; -import net.minecraft.world.level.block.Block; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent; import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; -import org.apache.commons.lang3.mutable.MutableObject; import org.jetbrains.annotations.ApiStatus; import java.util.*; -import java.util.function.Function; -import java.util.function.Predicate; import static com.drmangotea.tfmg.TFMG.MOD_ID; import static com.drmangotea.tfmg.TFMG.REGISTRATE; diff --git a/src/main/java/com/drmangotea/tfmg/base/spark/BlueSpark.java b/src/main/java/com/drmangotea/tfmg/base/spark/BlueSpark.java index 679309b8..acde238a 100644 --- a/src/main/java/com/drmangotea/tfmg/base/spark/BlueSpark.java +++ b/src/main/java/com/drmangotea/tfmg/base/spark/BlueSpark.java @@ -1,120 +1,29 @@ package com.drmangotea.tfmg.base.spark; - - - import com.drmangotea.tfmg.content.items.weapons.explosives.thermite_grenades.fire.BlueFireBlock; -import com.drmangotea.tfmg.registry.TFMGEntityTypes; -import com.drmangotea.tfmg.registry.TFMGItems; -import com.simibubi.create.content.trains.CubeParticleData; import net.minecraft.core.BlockPos; -import net.minecraft.core.particles.ParticleOptions; -import net.minecraft.core.particles.ParticleTypes; -import net.minecraft.network.syncher.SynchedEntityData; -import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.Mob; -import net.minecraft.world.entity.projectile.ThrowableProjectile; -import net.minecraft.world.item.Item; import net.minecraft.world.level.Level; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.EntityHitResult; -import net.minecraft.world.phys.HitResult; +import net.minecraft.world.level.block.state.BlockState; -public class BlueSpark extends ThrowableProjectile { - public BlueSpark(EntityType p_37391_, Level p_37392_) { +import java.util.Optional; + +public class BlueSpark extends Spark{ + + public BlueSpark(EntityType p_37391_, Level p_37392_) { super(p_37391_, p_37392_); - } - public BlueSpark(Level p_37399_, LivingEntity p_37400_) { - super(TFMGEntityTypes.SPARK.get(), p_37400_, p_37399_); + @Override + public int getColor() { + return 0x00FFFF; } - public BlueSpark(Level p_37394_, double p_37395_, double p_37396_, double p_37397_) { - super(TFMGEntityTypes.BLUE_SPARK.get(), p_37395_, p_37396_, p_37397_, p_37394_); + public float[] getCustomParticleTrail() { + return new float[]{4.1f, 60.2f, 100.3f}; } @Override - protected double getDefaultGravity() { - return 0.02f; + public Optional getFireState(BlockPos pos) { + return Optional.of(BlueFireBlock.getState(this.level(),pos)); } - - @Override - protected void defineSynchedData(SynchedEntityData.Builder builder) { - - } - - public void tick(){ - super.tick(); - if (this.isInWaterOrRain()) { - this.discard(); - } - if(this.level().isClientSide) { - - CubeParticleData data = - new CubeParticleData(4.1f, 60.2f, 100.3f, .0125f + .0625f * random.nextFloat(), 30, false); - level().addParticle(data, this.getX(), this.getY(), this.getZ(), this.random.nextGaussian() * 0.05D, -this.getDeltaMovement().y * 0.5D, this.random.nextGaussian() * 0.05D); - - } - } - - private ParticleOptions getParticle() { - - return ParticleTypes.FLAME; - } - - public void handleEntityEvent(byte p_37402_) { - if (p_37402_ == 3) { - ParticleOptions particleoptions = this.getParticle(); - - for(int i = 0; i < 8; ++i) { - this.level().addParticle(particleoptions, this.getX(), this.getY(), this.getZ(), 0.0D, 0.0D, 0.0D); - } - } - - } - protected void onHitBlock(BlockHitResult p_37384_) { - super.onHitBlock(p_37384_); - if (!this.level().isClientSide) { - Entity entity = this.getOwner(); - if (!(entity instanceof Mob)) { - BlockPos blockpos = p_37384_.getBlockPos().relative(p_37384_.getDirection()); - if (this.level().isEmptyBlock(blockpos)) { - this.level().setBlockAndUpdate(blockpos, BlueFireBlock.getState(this.level(), blockpos)); - } - } - - } - } - - protected void onHitEntity(EntityHitResult p_37386_) { - super.onHitEntity(p_37386_); - if (!this.level().isClientSide) { - Entity entity = p_37386_.getEntity(); - Entity entity1 = this.getOwner(); - int i = entity.getRemainingFireTicks(); - entity.setRemainingFireTicks(10); - - - } - } - - protected void onHit(HitResult p_37406_) { - super.onHit(p_37406_); - - if (!this.level().isClientSide) { - this.level().broadcastEntityEvent(this, (byte)3); - - - //this.level.explode(this, this.getX(), this.getY(0.0625D), this.getZ(), 2.0F, Explosion.BlockInteraction.NONE); - this.discard(); - } - } - - @SuppressWarnings("unchecked") - public static EntityType.Builder build(EntityType.Builder builder) { - EntityType.Builder entityBuilder = (EntityType.Builder) builder; - return entityBuilder.sized(.25f, .25f); - } -} \ No newline at end of file +} diff --git a/src/main/java/com/drmangotea/tfmg/base/spark/BlueSparkRenderer.java b/src/main/java/com/drmangotea/tfmg/base/spark/BlueSparkRenderer.java deleted file mode 100644 index 21e1921a..00000000 --- a/src/main/java/com/drmangotea/tfmg/base/spark/BlueSparkRenderer.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.drmangotea.tfmg.base.spark; - - -import com.drmangotea.tfmg.TFMG; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import com.mojang.math.Axis; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.entity.EntityRenderer; -import net.minecraft.client.renderer.entity.EntityRendererProvider; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.core.BlockPos; -import net.minecraft.resources.ResourceLocation; - - -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; -import org.joml.Matrix3f; -import org.joml.Matrix4f; - -@OnlyIn(Dist.CLIENT) -public class BlueSparkRenderer extends EntityRenderer { - private static final ResourceLocation TEXTURE_LOCATION = TFMG.asResource("textures/entity/blue_spark.png"); - private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION); - public BlueSparkRenderer(EntityRendererProvider.Context p_173962_) { - super(p_173962_); - } - - protected int getBlockLightLevel(BlueSpark p_114087_, BlockPos p_114088_) { - return 15; - } - - public void render(BlueSpark p_114080_, float p_114081_, float p_114082_, PoseStack p_114083_, MultiBufferSource p_114084_, int p_114085_) { - p_114083_.pushPose(); - p_114083_.scale(0.5F, 0.5F, 0.5F); - p_114083_.mulPose(this.entityRenderDispatcher.cameraOrientation()); - p_114083_.mulPose(Axis.YP.rotationDegrees(180.0F)); - PoseStack.Pose posestack$pose = p_114083_.last(); - Matrix4f matrix4f = posestack$pose.pose(); - Matrix3f matrix3f = posestack$pose.normal(); - VertexConsumer vertexconsumer = p_114084_.getBuffer(RENDER_TYPE); - vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 0.0F, 0, 0, 1); - vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 1.0F, 0, 1, 1); - vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 1.0F, 1, 1, 0); - vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 0.0F, 1, 0, 0); - p_114083_.popPose(); - super.render(p_114080_, p_114081_, p_114082_, p_114083_, p_114084_, p_114085_); - } - - private static void vertex(VertexConsumer p_114090_, Matrix4f p_114091_, Matrix3f p_114092_, int p_114093_, float p_114094_, int p_114095_, int p_114096_, int p_114097_) { - p_114090_.addVertex(p_114091_, p_114094_ - 0.5F, (float)p_114095_ - 0.25F, 0.0F).setColor(255, 255, 255, 255).setUv((float)p_114096_, (float)p_114097_).setOverlay(OverlayTexture.NO_OVERLAY).setUv2(p_114093_,p_114093_).setNormal( 0.0F, 1.0F, 0.0F); - } - - public ResourceLocation getTextureLocation(BlueSpark p_114078_) { - return TEXTURE_LOCATION; - } -} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/base/spark/ElectricSparkParticle.java b/src/main/java/com/drmangotea/tfmg/base/spark/ElectricSparkParticle.java index c79db1d4..56823fd5 100644 --- a/src/main/java/com/drmangotea/tfmg/base/spark/ElectricSparkParticle.java +++ b/src/main/java/com/drmangotea/tfmg/base/spark/ElectricSparkParticle.java @@ -20,6 +20,8 @@ public class ElectricSparkParticle extends CustomRotationParticle { protected int endFrames = 20; protected int totalFrames = 53; + + public ElectricSparkParticle(ClientLevel worldIn, double x, double y, double z, double vx, double vy, double vz, SpriteSet spriteSet, ParticleOptions data) { super(worldIn, x, y, z, spriteSet, 0); diff --git a/src/main/java/com/drmangotea/tfmg/base/spark/GreenSpark.java b/src/main/java/com/drmangotea/tfmg/base/spark/GreenSpark.java index a6e795e6..a32844f1 100644 --- a/src/main/java/com/drmangotea/tfmg/base/spark/GreenSpark.java +++ b/src/main/java/com/drmangotea/tfmg/base/spark/GreenSpark.java @@ -1,108 +1,33 @@ package com.drmangotea.tfmg.base.spark; - - +import com.drmangotea.tfmg.content.items.weapons.explosives.thermite_grenades.fire.BlueFireBlock; import com.drmangotea.tfmg.content.items.weapons.explosives.thermite_grenades.fire.GreenFireBlock; -import com.drmangotea.tfmg.registry.TFMGEntityTypes; -import com.drmangotea.tfmg.registry.TFMGItems; -import com.simibubi.create.content.trains.CubeParticleData; import net.minecraft.core.BlockPos; -import net.minecraft.core.particles.ParticleOptions; -import net.minecraft.core.particles.ParticleTypes; -import net.minecraft.network.syncher.SynchedEntityData; -import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.Mob; -import net.minecraft.world.entity.projectile.ThrowableProjectile; -import net.minecraft.world.item.Item; import net.minecraft.world.level.Level; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.EntityHitResult; -import net.minecraft.world.phys.HitResult; +import net.minecraft.world.level.block.state.BlockState; -public class GreenSpark extends ThrowableProjectile { - public GreenSpark(EntityType p_37391_, Level p_37392_) { +import java.util.Optional; + +public class GreenSpark extends Spark{ + + public GreenSpark(EntityType p_37391_, Level p_37392_) { super(p_37391_, p_37392_); } - public GreenSpark(Level p_37399_, LivingEntity p_37400_) { - super(TFMGEntityTypes.SPARK.get(), p_37400_, p_37399_); + + + public float[] getCustomParticleTrail() { + return new float[]{0.01f, 100.25f, 20.1f}; } - public GreenSpark(Level level, double p_37395_, double p_37396_, double p_37397_) { - super(TFMGEntityTypes.SPARK.get(), p_37395_, p_37396_, p_37397_, level); + + @Override + public int getColor() { + return 0x4CFF00; } @Override - protected double getDefaultGravity() { - return 0.02f; + public Optional getFireState(BlockPos pos) { + return Optional.of(GreenFireBlock.getState(this.level(),pos)); } - - @Override - protected void defineSynchedData(SynchedEntityData.Builder builder) { - - } - - public void tick(){ - super.tick(); - if (this.isInWaterOrRain()) { - this.discard(); - } - if(this.level().isClientSide) { - - CubeParticleData data = - new CubeParticleData(0.01f, 100.25f, 20.1f, .0125f + .0625f * random.nextFloat(), 30, true); - level().addParticle(data, this.getX(), this.getY(), this.getZ(), this.random.nextGaussian() * 0.05D, -this.getDeltaMovement().y * 0.5D, this.random.nextGaussian() * 0.05D); - } } - - private ParticleOptions getParticle() { - - return ParticleTypes.FLAME; - } - public void handleEntityEvent(byte p_37402_) { - if (p_37402_ == 3) { - ParticleOptions particleoptions = this.getParticle(); - - for(int i = 0; i < 8; ++i) { - this.level().addParticle(particleoptions, this.getX(), this.getY(), this.getZ(), 0.0D, 0.0D, 0.0D); - } - } - } - protected void onHitBlock(BlockHitResult p_37384_) { - super.onHitBlock(p_37384_); - if (!this.level().isClientSide) { - Entity entity = this.getOwner(); - if (!(entity instanceof Mob)) { - BlockPos blockpos = p_37384_.getBlockPos().relative(p_37384_.getDirection()); - if (this.level().isEmptyBlock(blockpos)) { - this.level().setBlockAndUpdate(blockpos, GreenFireBlock.getState(this.level(), blockpos)); - } - } - - } - } - - protected void onHitEntity(EntityHitResult p_37386_) { - super.onHitEntity(p_37386_); - if (!this.level().isClientSide) { - Entity entity = p_37386_.getEntity(); - entity.setRemainingFireTicks(10); - } - } - - protected void onHit(HitResult p_37406_) { - super.onHit(p_37406_); - if (!this.level().isClientSide) { - this.level().broadcastEntityEvent(this, (byte)3); - this.discard(); - } - - } - - @SuppressWarnings("unchecked") - public static EntityType.Builder build(EntityType.Builder builder) { - EntityType.Builder entityBuilder = (EntityType.Builder) builder; - return entityBuilder.sized(.25f, .25f); - } -} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/base/spark/GreenSparkRenderer.java b/src/main/java/com/drmangotea/tfmg/base/spark/GreenSparkRenderer.java deleted file mode 100644 index 4e375855..00000000 --- a/src/main/java/com/drmangotea/tfmg/base/spark/GreenSparkRenderer.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.drmangotea.tfmg.base.spark; - - -import com.drmangotea.tfmg.TFMG; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import com.mojang.math.Axis; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.entity.EntityRenderer; -import net.minecraft.client.renderer.entity.EntityRendererProvider; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.core.BlockPos; -import net.minecraft.resources.ResourceLocation; - - -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; -import org.joml.Matrix3f; -import org.joml.Matrix4f; - -@OnlyIn(Dist.CLIENT) -public class GreenSparkRenderer extends EntityRenderer { - private static final ResourceLocation TEXTURE_LOCATION = TFMG.asResource("textures/entity/green_spark.png"); - private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION); - public GreenSparkRenderer(EntityRendererProvider.Context p_173962_) { - super(p_173962_); - } - - protected int getBlockLightLevel(GreenSpark p_114087_, BlockPos p_114088_) { - return 15; - } - - public void render(GreenSpark p_114080_, float p_114081_, float p_114082_, PoseStack p_114083_, MultiBufferSource p_114084_, int p_114085_) { - p_114083_.pushPose(); - p_114083_.scale(0.5F, 0.5F, 0.5F); - p_114083_.mulPose(this.entityRenderDispatcher.cameraOrientation()); - p_114083_.mulPose(Axis.YP.rotationDegrees(180.0F)); - PoseStack.Pose posestack$pose = p_114083_.last(); - Matrix4f matrix4f = posestack$pose.pose(); - Matrix3f matrix3f = posestack$pose.normal(); - VertexConsumer vertexconsumer = p_114084_.getBuffer(RENDER_TYPE); - vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 0.0F, 0, 0, 1); - vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 1.0F, 0, 1, 1); - vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 1.0F, 1, 1, 0); - vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 0.0F, 1, 0, 0); - p_114083_.popPose(); - super.render(p_114080_, p_114081_, p_114082_, p_114083_, p_114084_, p_114085_); - } - - private static void vertex(VertexConsumer p_114090_, Matrix4f p_114091_, Matrix3f p_114092_, int p_114093_, float p_114094_, int p_114095_, int p_114096_, int p_114097_) { - p_114090_.addVertex(p_114091_, p_114094_ - 0.5F, (float)p_114095_ - 0.25F, 0.0F).setColor(255, 255, 255, 255).setUv((float)p_114096_, (float)p_114097_).setOverlay(OverlayTexture.NO_OVERLAY).setUv2(p_114093_,p_114093_).setNormal( 0.0F, 1.0F, 0.0F); - } - - public ResourceLocation getTextureLocation(GreenSpark p_114078_) { - return TEXTURE_LOCATION; - } -} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/base/spark/LithiumSpark.java b/src/main/java/com/drmangotea/tfmg/base/spark/LithiumSpark.java new file mode 100644 index 00000000..7d8ec35e --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/base/spark/LithiumSpark.java @@ -0,0 +1,33 @@ +package com.drmangotea.tfmg.base.spark; + +import com.drmangotea.tfmg.content.items.weapons.explosives.thermite_grenades.fire.GreenFireBlock; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; + +import java.util.Optional; + +public class LithiumSpark extends Spark{ + + public LithiumSpark(EntityType p_37391_, Level p_37392_) { + super(p_37391_, p_37392_); + } + + + public float[] getCustomParticleTrail() { + return new float[]{100, 0, 0}; + } + + + @Override + public int getColor() { + return 0xCC0000; + } + + + @Override + public Optional getFireState(BlockPos pos) { + return Optional.empty(); + } +} diff --git a/src/main/java/com/drmangotea/tfmg/base/spark/Spark.java b/src/main/java/com/drmangotea/tfmg/base/spark/Spark.java index bd2b9b34..5ab5693f 100644 --- a/src/main/java/com/drmangotea/tfmg/base/spark/Spark.java +++ b/src/main/java/com/drmangotea/tfmg/base/spark/Spark.java @@ -1,39 +1,56 @@ package com.drmangotea.tfmg.base.spark; -import com.drmangotea.tfmg.registry.TFMGEntityTypes; -import com.drmangotea.tfmg.registry.TFMGItems; +import com.drmangotea.tfmg.registry.TFMGMobEffects; +import com.simibubi.create.content.trains.CubeParticleData; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.projectile.ThrowableProjectile; -import net.minecraft.world.item.Item; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.BaseFireBlock; +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.HitResult; +import net.minecraft.world.phys.Vec3; + +import java.util.Optional; public class Spark extends ThrowableProjectile { + + public float gravity = 0.02f; + public Spark(EntityType p_37391_, Level p_37392_) { super(p_37391_, p_37392_); } - public Spark(Level p_37399_, LivingEntity p_37400_) { - super(TFMGEntityTypes.SPARK.get(), p_37400_, p_37399_); - } - public Spark(Level p_37394_, double p_37395_, double p_37396_, double p_37397_) { - super(TFMGEntityTypes.SPARK.get(), p_37395_, p_37396_, p_37397_, p_37394_); - } @Override protected double getDefaultGravity() { - return 0.02f; + return gravity; + } + + public Optional getFireState(BlockPos pos){ + return Optional.of(BaseFireBlock.getState(this.level(), pos)); + } + + + + public float[] getCustomParticleTrail() { + return new float[]{0,0,0}; + } + + public ParticleOptions getTrailParticle(){ + return ParticleTypes.FLAME; } @Override @@ -41,45 +58,71 @@ public class Spark extends ThrowableProjectile { } - public void tick(){ + public void burst(double pX, double pY, double pZ, float pVelocity, float pInaccuracy) { + Vec3 vec3 = (new Vec3(pX, pY, pZ)).normalize().add(this.random.triangle(0.0D, 0.0172275D * (double) pInaccuracy), 0, this.random.triangle(0.0D, 0.0172275D * (double) pInaccuracy)).scale((double) pVelocity); + this.setDeltaMovement(vec3); + double d0 = vec3.horizontalDistance(); + this.setYRot((float) (Mth.atan2(vec3.x, vec3.z) * (double) (180F / (float) Math.PI))); + this.setXRot((float) (Mth.atan2(vec3.y, d0) * (double) (180F / (float) Math.PI))); + this.yRotO = this.getYRot(); + this.xRotO = this.getXRot(); + } + + public void setGravity(float gravity) { + this.gravity = gravity; + } + + + public void tick() { super.tick(); if (this.isInWaterOrRain()) { this.discard(); } - if(this.level().isClientSide) { - this.level().addParticle(ParticleTypes.FLAME, this.getX(), this.getY(), this.getZ(), this.random.nextGaussian() * 0.05D, -this.getDeltaMovement().y * 0.5D, this.random.nextGaussian() * 0.05D); + if (level().isClientSide) { + if (getCustomParticleTrail()[0] == 0 && getCustomParticleTrail()[1] == 0 && getCustomParticleTrail()[2] == 0) { + this.level().addParticle(getTrailParticle(), this.getX(), this.getY(), this.getZ(), this.random.nextGaussian() * 0.05D, -this.getDeltaMovement().y * 0.5D, this.random.nextGaussian() * 0.05D); + } else { + CubeParticleData data = + new CubeParticleData(getCustomParticleTrail()[0], getCustomParticleTrail()[1], getCustomParticleTrail()[2], .0125f + .0625f * random.nextFloat(), 30, true); + level().addParticle(data, this.getX(), this.getY(), this.getZ(), this.random.nextGaussian() * 0.05D, -this.getDeltaMovement().y * 0.5D, this.random.nextGaussian() * 0.05D); + } } + } - protected Item getDefaultItem() { - return TFMGItems.THERMITE_GRENADE.get(); - } + private ParticleOptions getParticle() { - return ParticleTypes.FLAME; + return getTrailParticle(); } public void handleEntityEvent(byte p_37402_) { if (p_37402_ == 3) { ParticleOptions particleoptions = this.getParticle(); - for(int i = 0; i < 8; ++i) { + for (int i = 0; i < 8; ++i) { this.level().addParticle(particleoptions, this.getX(), this.getY(), this.getZ(), 0.0D, 0.0D, 0.0D); } } } + + protected void onHitBlock(BlockHitResult hitResult) { super.onHitBlock(hitResult); if (!this.level().isClientSide) { Entity entity = this.getOwner(); - if (!(entity instanceof Mob) ) { + if (!(entity instanceof Mob)) { BlockPos blockpos = hitResult.getBlockPos().relative(hitResult.getDirection()); - if (this.level().isEmptyBlock(blockpos)) { - this.level().setBlockAndUpdate(blockpos, BaseFireBlock.getState(this.level(), blockpos)); + if (this.level().isEmptyBlock(blockpos)&&getFireState(blockpos).isPresent()) { + this.level().setBlockAndUpdate(blockpos, getFireState(blockpos).get()); } } } } + public int getColor(){ + return 0xFFFF8C; + } + protected void onHitEntity(EntityHitResult p_37386_) { super.onHitEntity(p_37386_); if (!this.level().isClientSide) { @@ -88,6 +131,13 @@ public class Spark extends ThrowableProjectile { if (entity.getRemainingFireTicks() > 0 && !entity.fireImmune()) { entity.hurt(this.damageSources().onFire(), 1.0F); } + if (this instanceof LithiumSpark) + if (entity instanceof LivingEntity) { + + ((LivingEntity) entity).addEffect(new MobEffectInstance(TFMGMobEffects.HELLFIRE, 60)); + + + } } } @@ -95,7 +145,7 @@ public class Spark extends ThrowableProjectile { super.onHit(p_37406_); if (!this.level().isClientSide) { - this.level().broadcastEntityEvent(this, (byte)3); + this.level().broadcastEntityEvent(this, (byte) 3); this.discard(); } } @@ -105,4 +155,7 @@ public class Spark extends ThrowableProjectile { EntityType.Builder entityBuilder = (EntityType.Builder) builder; return entityBuilder.sized(.25f, .25f); } + + + } \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/base/spark/SparkRenderer.java b/src/main/java/com/drmangotea/tfmg/base/spark/SparkRenderer.java index 48c46ffa..43d7d457 100644 --- a/src/main/java/com/drmangotea/tfmg/base/spark/SparkRenderer.java +++ b/src/main/java/com/drmangotea/tfmg/base/spark/SparkRenderer.java @@ -1,5 +1,6 @@ package com.drmangotea.tfmg.base.spark; +import com.drmangotea.tfmg.TFMG; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Axis; @@ -19,36 +20,48 @@ import org.joml.Matrix4f; @OnlyIn(Dist.CLIENT) public class SparkRenderer extends EntityRenderer { - private static final ResourceLocation TEXTURE_LOCATION = ResourceLocation.withDefaultNamespace("textures/particle/lava.png"); + + + + public int color = 0xFFD600; + + + + private static final ResourceLocation TEXTURE_LOCATION = TFMG.asResource("textures/entity/spark.png"); private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION); public SparkRenderer(EntityRendererProvider.Context p_173962_) { super(p_173962_); } - protected int getBlockLightLevel(Spark p_114087_, BlockPos p_114088_) { + protected int getBlockLightLevel(Spark spark, BlockPos pos) { return 15; } - public void render(Spark p_114080_, float p_114081_, float p_114082_, PoseStack p_114083_, MultiBufferSource p_114084_, int p_114085_) { - p_114083_.pushPose(); - p_114083_.scale(0.5F, 0.5F, 0.5F); - p_114083_.mulPose(this.entityRenderDispatcher.cameraOrientation()); - p_114083_.mulPose(Axis.YP.rotationDegrees(180.0F)); - PoseStack.Pose posestack$pose = p_114083_.last(); + public void render(Spark spark, float p_114081_, float p_114082_, PoseStack poseStack, MultiBufferSource bufferSource, int p_114085_) { + poseStack.pushPose(); + poseStack.scale(0.5F, 0.5F, 0.5F); + poseStack.mulPose(this.entityRenderDispatcher.cameraOrientation()); + poseStack.mulPose(Axis.YP.rotationDegrees(180.0F)); + PoseStack.Pose posestack$pose = poseStack.last(); Matrix4f matrix4f = posestack$pose.pose(); Matrix3f matrix3f = posestack$pose.normal(); - VertexConsumer vertexconsumer = p_114084_.getBuffer(RENDER_TYPE); - vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 0.0F, 0, 0, 1); - vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 1.0F, 0, 1, 1); - vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 1.0F, 1, 1, 0); - vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 0.0F, 1, 0, 0); - p_114083_.popPose(); - super.render(p_114080_, p_114081_, p_114082_, p_114083_, p_114084_, p_114085_); + VertexConsumer vertexconsumer = bufferSource.getBuffer(RENDER_TYPE); + + + + vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 0.0F, 0, 0, 1,spark.getColor()); + vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 1.0F, 0, 1, 1,spark.getColor()); + vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 1.0F, 1, 1, 0,spark.getColor()); + vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 0.0F, 1, 0, 0,spark.getColor()); + poseStack.popPose(); + super.render(spark, p_114081_, p_114082_, poseStack, bufferSource, p_114085_); } - private static void vertex(VertexConsumer p_114090_, Matrix4f p_114091_, Matrix3f p_114092_, int p_114093_, float p_114094_, int p_114095_, int p_114096_, int p_114097_) { - p_114090_.addVertex(p_114091_, p_114094_ - 0.5F, (float)p_114095_ - 0.25F, 0.0F).setColor(255, 255, 255, 255).setUv((float)p_114096_, (float)p_114097_).setOverlay(OverlayTexture.NO_OVERLAY).setUv2(p_114093_,p_114093_).setNormal( 0.0F, 1.0F, 0.0F); + private void vertex(VertexConsumer vertexConsumer, Matrix4f matrix4f, Matrix3f matrix3f, int p_114093_, float p_114094_, int p_114095_, int p_114096_, int p_114097_,int color) { + vertexConsumer.addVertex(matrix4f, p_114094_ - 0.5F, (float)p_114095_ - 0.25F, 0.0F).setColor(color).setUv((float)p_114096_, (float)p_114097_).setOverlay(OverlayTexture.NO_OVERLAY).setLight(15728880).setUv2(p_114093_,p_114093_).setNormal( 0.0F, 1.0F, 0.0F); } public ResourceLocation getTextureLocation(Spark p_114078_) { return TEXTURE_LOCATION; } + + } \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/LithiumBlock.java b/src/main/java/com/drmangotea/tfmg/content/decoration/LithiumBlock.java index 0c11e0f2..6d3470ad 100644 --- a/src/main/java/com/drmangotea/tfmg/content/decoration/LithiumBlock.java +++ b/src/main/java/com/drmangotea/tfmg/content/decoration/LithiumBlock.java @@ -1,6 +1,5 @@ package com.drmangotea.tfmg.content.decoration; -import com.drmangotea.tfmg.content.items.weapons.lithium_blade.LithiumSpark; import com.drmangotea.tfmg.registry.TFMGEntityTypes; import com.simibubi.create.Create; import net.minecraft.core.BlockPos; @@ -27,28 +26,6 @@ public class LithiumBlock extends Block { public void randomTick(BlockState blockState, ServerLevel level, BlockPos pos, RandomSource randomSource) { super.randomTick(blockState, level, pos, randomSource); - for(Direction direction : Direction.values()){ - if(level.getFluidState(pos.relative(direction)).is(Fluids.WATER)){ - for (int i = 0; i < 12; i++) { - float x = Create.RANDOM.nextFloat(360); - float y = Create.RANDOM.nextFloat(360); - float z = Create.RANDOM.nextFloat(360); - LithiumSpark spark = TFMGEntityTypes.LITHIUM_SPARK.create(level); - spark.moveTo(pos.getX(), pos.getY() + 0.5, pos.getZ()); - - float f = -Mth.sin(y * ((float) Math.PI / 180F)) * Mth.cos(x * ((float) Math.PI / 180F)); - float f1 = -Mth.sin((x + z) * ((float) Math.PI / 180F)); - float f2 = Mth.cos(y * ((float) Math.PI / 180F)) * Mth.cos(x * ((float) Math.PI / 180F)); - spark.shoot(f, f1, f2, 0.3f, 1); - level.addFreshEntity(spark); - } - level.explode(null, pos.getX(), pos.getY(), pos.getZ(), 1, Level.ExplosionInteraction.NONE); - - level.destroyBlock(pos,false); - break; - } - - } } diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorBlock.java b/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorBlock.java index ba358f66..7917baf8 100644 --- a/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorBlock.java +++ b/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorBlock.java @@ -1,8 +1,12 @@ package com.drmangotea.tfmg.content.decoration.doors; +import com.drmangotea.tfmg.mixin.accessor.SlidingDoorBlockEntityAccessor; import com.drmangotea.tfmg.registry.TFMGBlockEntities; +import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.content.contraptions.ContraptionWorld; +import com.simibubi.create.content.decoration.slidingDoor.SlidingDoorBlock; +import com.simibubi.create.content.decoration.slidingDoor.SlidingDoorBlockEntity; import com.simibubi.create.content.decoration.slidingDoor.SlidingDoorShapes; import com.simibubi.create.content.equipment.wrench.IWrenchable; import com.simibubi.create.foundation.block.IBE; @@ -40,219 +44,19 @@ import javax.annotation.Nullable; import static com.simibubi.create.content.decoration.slidingDoor.SlidingDoorBlock.TRAIN_SET_TYPE; -public class TFMGSlidingDoorBlock extends DoorBlock implements IWrenchable, IBE { +public class TFMGSlidingDoorBlock extends SlidingDoorBlock implements IWrenchable, IBE { - public static final BooleanProperty VISIBLE = BooleanProperty.create("visible"); - private boolean folds; - - public static TFMGSlidingDoorBlock metal(Properties p_52737_, boolean folds) { - return new TFMGSlidingDoorBlock(p_52737_, TRAIN_SET_TYPE.get(), folds); - } - - public TFMGSlidingDoorBlock(Properties p_52737_, BlockSetType type, boolean folds) { - super(type,p_52737_ ); - this.folds = folds; - } - - public boolean isFoldingDoor() { - return folds; + public TFMGSlidingDoorBlock(Properties properties, BlockSetType type, boolean folds) { + super(properties, type, folds); } @Override - protected void createBlockStateDefinition(Builder pBuilder) { - super.createBlockStateDefinition(pBuilder.add(VISIBLE)); + public Class getBlockEntityClass() { + return SlidingDoorBlockEntity.class; } @Override - public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, CollisionContext pContext) { - if (!pState.getValue(OPEN) && (pState.getValue(VISIBLE) || pLevel instanceof ContraptionWorld)) - return super.getShape(pState, pLevel, pPos, pContext); - - Direction direction = pState.getValue(FACING); - boolean hinge = pState.getValue(HINGE) == DoorHingeSide.RIGHT; - return SlidingDoorShapes.get(direction, hinge, isFoldingDoor()); - } - - @Override - public boolean canSurvive(BlockState pState, LevelReader pLevel, BlockPos pPos) { - return pState.getValue(HALF) == DoubleBlockHalf.LOWER || pLevel.getBlockState(pPos.below()) - .is(this); - } - - @Override - public VoxelShape getInteractionShape(BlockState pState, BlockGetter pLevel, BlockPos pPos) { - return getShape(pState, pLevel, pPos, CollisionContext.empty()); - } - - @Override - public BlockState getStateForPlacement(BlockPlaceContext pContext) { - BlockState stateForPlacement = super.getStateForPlacement(pContext); - if (stateForPlacement != null && stateForPlacement.getValue(OPEN)) - return stateForPlacement.setValue(OPEN, false) - .setValue(POWERED, false); - return stateForPlacement; - } - - @Override - public void onPlace(BlockState pState, Level pLevel, BlockPos pPos, BlockState pOldState, boolean pIsMoving) { - if (!pOldState.is(this)) - deferUpdate(pLevel, pPos); - } - - @Override - public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel, - BlockPos pCurrentPos, BlockPos pFacingPos) { - BlockState blockState = super.updateShape(pState, pFacing, pFacingState, pLevel, pCurrentPos, pFacingPos); - if (blockState.isAir()) - return blockState; - DoubleBlockHalf doubleblockhalf = blockState.getValue(HALF); - if (pFacing.getAxis() == Direction.Axis.Y - && doubleblockhalf == DoubleBlockHalf.LOWER == (pFacing == Direction.UP)) { - return pFacingState.is(this) && pFacingState.getValue(HALF) != doubleblockhalf - ? blockState.setValue(VISIBLE, pFacingState.getValue(VISIBLE)) - : Blocks.AIR.defaultBlockState(); - } - return blockState; - } - - @Override - public void setOpen(@Nullable Entity entity, Level level, BlockState state, BlockPos pos, boolean open) { - if (!state.is(this)) - return; - if (state.getValue(OPEN) == open) - return; - BlockState changedState = state.setValue(OPEN, open); - if (open) - changedState = changedState.setValue(VISIBLE, false); - level.setBlock(pos, changedState, 10); - - DoorHingeSide hinge = changedState.getValue(HINGE); - Direction facing = changedState.getValue(FACING); - BlockPos otherPos = - pos.relative(hinge == DoorHingeSide.LEFT ? facing.getClockWise() : facing.getCounterClockWise()); - BlockState otherDoor = level.getBlockState(otherPos); - if (isDoubleDoor(changedState, hinge, facing, otherDoor)) - setOpen(entity, level, otherDoor, otherPos, open); - - this.playSound(level, pos, open); - level.gameEvent(entity, open ? GameEvent.BLOCK_OPEN : GameEvent.BLOCK_CLOSE, pos); - } - - @Override - public void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pBlock, BlockPos pFromPos, - boolean pIsMoving) { - boolean lower = pState.getValue(HALF) == DoubleBlockHalf.LOWER; - boolean isPowered = isDoorPowered(pLevel, pPos, pState); - if (defaultBlockState().is(pBlock)) - return; - if (isPowered == pState.getValue(POWERED)) - return; - - TFMGSlidingDoorBlockEntity be = getBlockEntity(pLevel, lower ? pPos : pPos.below()); - if (be != null && be.deferUpdate) - return; - - BlockState changedState = pState.setValue(POWERED, Boolean.valueOf(isPowered)) - .setValue(OPEN, Boolean.valueOf(isPowered)); - if (isPowered) - changedState = changedState.setValue(VISIBLE, false); - - if (isPowered != pState.getValue(OPEN)) { - this.playSound(pLevel, pPos, isPowered); - pLevel.gameEvent(null, isPowered ? GameEvent.BLOCK_OPEN : GameEvent.BLOCK_CLOSE, pPos); - - DoorHingeSide hinge = changedState.getValue(HINGE); - Direction facing = changedState.getValue(FACING); - BlockPos otherPos = - pPos.relative(hinge == DoorHingeSide.LEFT ? facing.getClockWise() : facing.getCounterClockWise()); - BlockState otherDoor = pLevel.getBlockState(otherPos); - - if (isDoubleDoor(changedState, hinge, facing, otherDoor)) { - otherDoor = otherDoor.setValue(POWERED, Boolean.valueOf(isPowered)) - .setValue(OPEN, Boolean.valueOf(isPowered)); - if (isPowered) - otherDoor = otherDoor.setValue(VISIBLE, false); - pLevel.setBlock(otherPos, otherDoor, 2); - } - } - - pLevel.setBlock(pPos, changedState, 2); - } - - public static boolean isDoorPowered(Level pLevel, BlockPos pPos, BlockState state) { - boolean lower = state.getValue(HALF) == DoubleBlockHalf.LOWER; - DoorHingeSide hinge = state.getValue(HINGE); - Direction facing = state.getValue(FACING); - BlockPos otherPos = - pPos.relative(hinge == DoorHingeSide.LEFT ? facing.getClockWise() : facing.getCounterClockWise()); - BlockState otherDoor = pLevel.getBlockState(otherPos); - - if (isDoubleDoor(state.cycle(OPEN), hinge, facing, otherDoor) && (pLevel.hasNeighborSignal(otherPos) - || pLevel.hasNeighborSignal(otherPos.relative(lower ? Direction.UP : Direction.DOWN)))) - return true; - - return pLevel.hasNeighborSignal(pPos) - || pLevel.hasNeighborSignal(pPos.relative(lower ? Direction.UP : Direction.DOWN)); - } - - - - - -@Override -protected InteractionResult useWithoutItem(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, BlockHitResult pHit) { - - pState = pState.cycle(OPEN); - if (pState.getValue(OPEN)) - pState = pState.setValue(VISIBLE, false); - pLevel.setBlock(pPos, pState, 10); - pLevel.gameEvent(pPlayer, isOpen(pState) ? GameEvent.BLOCK_OPEN : GameEvent.BLOCK_CLOSE, pPos); - - DoorHingeSide hinge = pState.getValue(HINGE); - Direction facing = pState.getValue(FACING); - BlockPos otherPos = - pPos.relative(hinge == DoorHingeSide.LEFT ? facing.getClockWise() : facing.getCounterClockWise()); - BlockState otherDoor = pLevel.getBlockState(otherPos); - if (isDoubleDoor(pState, hinge, facing, otherDoor)) - useWithoutItem(otherDoor, pLevel, otherPos, pPlayer, pHit); - else if (pState.getValue(OPEN)) - pLevel.levelEvent(pPlayer, getOpenSound(), pPos, 0); - - return InteractionResult.sidedSuccess(pLevel.isClientSide); - } - public void deferUpdate(LevelAccessor level, BlockPos pos) { - withBlockEntityDo(level, pos, sdte -> sdte.deferUpdate = true); - } - public static boolean isDoubleDoor(BlockState pState, DoorHingeSide hinge, Direction facing, BlockState otherDoor) { - return otherDoor.getBlock() == pState.getBlock() && otherDoor.getValue(HINGE) != hinge - && otherDoor.getValue(FACING) == facing && otherDoor.getValue(OPEN) != pState.getValue(OPEN) - && otherDoor.getValue(HALF) == pState.getValue(HALF); - } - @Override - public RenderShape getRenderShape(BlockState pState) { - return pState.getValue(VISIBLE) ? RenderShape.MODEL : RenderShape.ENTITYBLOCK_ANIMATED; - } - private void playSound(Level pLevel, BlockPos pPos, boolean pIsOpening) { - if (pIsOpening) - pLevel.levelEvent((Player) null, this.getOpenSound(), pPos, 0); - } - private int getOpenSound() { - return 1005; - } - @Nullable - @Override - public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { - if (state.getValue(HALF) == DoubleBlockHalf.UPPER) - return null; - return IBE.super.newBlockEntity(pos, state); - } - @Override - public Class getBlockEntityClass() { - return TFMGSlidingDoorBlockEntity.class; - } - - @Override - public BlockEntityType getBlockEntityType() { + public BlockEntityType getBlockEntityType() { return TFMGBlockEntities.TFMG_SLIDING_DOOR.get(); } diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorBlockEntity.java deleted file mode 100644 index 00bf18bb..00000000 --- a/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorBlockEntity.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.drmangotea.tfmg.content.decoration.doors; - -import com.simibubi.create.content.decoration.slidingDoor.SlidingDoorBlockEntity; -import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.animation.LerpedFloat; -import net.minecraft.core.BlockPos; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.sounds.SoundSource; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.DoorBlock; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.AABB; - -import java.util.List; - -public class TFMGSlidingDoorBlockEntity extends SlidingDoorBlockEntity { - LerpedFloat animation; - int bridgeTicks; - boolean deferUpdate; - public TFMGSlidingDoorBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { - super(type, pos, state); - animation = LerpedFloat.linear() - .startWithValue(isOpen(state) ? 1 : 0); - } - - @Override - public void tick() { - if (deferUpdate && !level.isClientSide()) { - deferUpdate = false; - BlockState blockState = getBlockState(); - blockState.handleNeighborChanged(level, worldPosition, Blocks.AIR, worldPosition, false); - } - - super.tick(); - boolean open = isOpen(getBlockState()); - boolean wasSettled = animation.settled(); - animation.chase(open ? 1 : 0, .15f, LerpedFloat.Chaser.LINEAR); - animation.tickChaser(); - - if (level.isClientSide()) { - if (bridgeTicks < 2 && open) - bridgeTicks++; - else if (bridgeTicks > 0 && !open && isVisible(getBlockState())) - bridgeTicks--; - return; - } - - if (!open && !wasSettled && animation.settled() && !isVisible(getBlockState())) - showBlockModel(); - } - - @Override - protected AABB createRenderBoundingBox() { - return super.createRenderBoundingBox().inflate(1); - } - - protected boolean isVisible(BlockState state) { - return state.getOptionalValue(TFMGSlidingDoorBlock.VISIBLE) - .orElse(true); - } - - protected boolean shouldRenderSpecial(BlockState state) { - return !isVisible(state) || bridgeTicks != 0; - } - - protected void showBlockModel() { - level.setBlock(worldPosition, getBlockState().setValue(TFMGSlidingDoorBlock.VISIBLE, true), 3); - level.playSound(null, worldPosition, SoundEvents.IRON_DOOR_CLOSE, SoundSource.BLOCKS, .5f, 1); - } - - @Override - public void addBehaviours(List behaviours) {} - - public static boolean isOpen(BlockState state) { - return state.getOptionalValue(DoorBlock.OPEN) - .orElse(false); - } - -} diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorRenderer.java b/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorRenderer.java index a0dc0e63..76870084 100644 --- a/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorRenderer.java +++ b/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorRenderer.java @@ -2,6 +2,7 @@ package com.drmangotea.tfmg.content.decoration.doors; +import com.drmangotea.tfmg.mixin.accessor.SlidingDoorBlockEntityAccessor; import com.drmangotea.tfmg.registry.TFMGPartialModels; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -30,15 +31,15 @@ import net.minecraft.world.phys.Vec3; -public class TFMGSlidingDoorRenderer extends SafeBlockEntityRenderer { +public class TFMGSlidingDoorRenderer extends SafeBlockEntityRenderer { public TFMGSlidingDoorRenderer(Context context) {} @Override - protected void renderSafe(TFMGSlidingDoorBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer, + protected void renderSafe(SlidingDoorBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { BlockState blockState = be.getBlockState(); - if (!be.shouldRenderSpecial(blockState)) + if (!((SlidingDoorBlockEntityAccessor)be).i_architecture$shouldRenderSpecial(blockState)) return; Direction facing = blockState.getValue(DoorBlock.FACING); @@ -47,7 +48,7 @@ public class TFMGSlidingDoorRenderer extends SafeBlockEntityRenderer type, BlockPos pos, BlockState state) { - super(type, pos, state); - } - - @Override - protected AABB createRenderBoundingBox() { - return super.createRenderBoundingBox().inflate(2); - } - - @Override - public void write(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - super.write(compound,registries , clientPacket); - } - - @Override - protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - super.read(compound,registries , clientPacket); - if (clientPacket) - visualSpeed.chase(getGeneratedSpeed(), 1 / 64f, LerpedFloat.Chaser.EXP); - } - - @Override - public void tick() { - super.tick(); - - if (!level.isClientSide) - return; - - - - float targetSpeed = getSpeed(); - visualSpeed.updateChaseTarget(targetSpeed); - visualSpeed.tickChaser(); - angle += visualSpeed.getValue() * 3 / 10f; - angle %= 360; - } -} diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/cogs/TFMGCogWheelBlock.java b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/cogs/TFMGCogWheelBlock.java similarity index 98% rename from src/main/java/com/drmangotea/tfmg/content/decoration/cogs/TFMGCogWheelBlock.java rename to src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/cogs/TFMGCogWheelBlock.java index fe0aea84..112338d4 100644 --- a/src/main/java/com/drmangotea/tfmg/content/decoration/cogs/TFMGCogWheelBlock.java +++ b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/cogs/TFMGCogWheelBlock.java @@ -1,4 +1,4 @@ -package com.drmangotea.tfmg.content.decoration.cogs; +package com.drmangotea.tfmg.content.decoration.kinetics.cogs; import com.drmangotea.tfmg.registry.TFMGBlockEntities; import com.simibubi.create.AllBlocks; @@ -15,7 +15,6 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/cogs/TFMGCogwheelBlockItem.java b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/cogs/TFMGCogwheelBlockItem.java similarity index 99% rename from src/main/java/com/drmangotea/tfmg/content/decoration/cogs/TFMGCogwheelBlockItem.java rename to src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/cogs/TFMGCogwheelBlockItem.java index af81ad2d..1062c5e3 100644 --- a/src/main/java/com/drmangotea/tfmg/content/decoration/cogs/TFMGCogwheelBlockItem.java +++ b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/cogs/TFMGCogwheelBlockItem.java @@ -1,4 +1,4 @@ -package com.drmangotea.tfmg.content.decoration.cogs; +package com.drmangotea.tfmg.content.decoration.kinetics.cogs; import com.simibubi.create.AllShapes; import com.simibubi.create.content.kinetics.base.DirectionalKineticBlock; diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/cogs/TFMGCogwheelRenderer.java b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/cogs/TFMGCogwheelRenderer.java similarity index 97% rename from src/main/java/com/drmangotea/tfmg/content/decoration/cogs/TFMGCogwheelRenderer.java rename to src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/cogs/TFMGCogwheelRenderer.java index 0362b0e4..88b8cdf4 100644 --- a/src/main/java/com/drmangotea/tfmg/content/decoration/cogs/TFMGCogwheelRenderer.java +++ b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/cogs/TFMGCogwheelRenderer.java @@ -1,4 +1,4 @@ -package com.drmangotea.tfmg.content.decoration.cogs; +package com.drmangotea.tfmg.content.decoration.kinetics.cogs; import com.drmangotea.tfmg.registry.TFMGBlocks; import com.drmangotea.tfmg.registry.TFMGPartialModels; diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/cogs/TFMGCogwheelVisual.java b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/cogs/TFMGCogwheelVisual.java similarity index 94% rename from src/main/java/com/drmangotea/tfmg/content/decoration/cogs/TFMGCogwheelVisual.java rename to src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/cogs/TFMGCogwheelVisual.java index 80787751..5f700801 100644 --- a/src/main/java/com/drmangotea/tfmg/content/decoration/cogs/TFMGCogwheelVisual.java +++ b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/cogs/TFMGCogwheelVisual.java @@ -1,8 +1,7 @@ -package com.drmangotea.tfmg.content.decoration.cogs; +package com.drmangotea.tfmg.content.decoration.kinetics.cogs; import com.drmangotea.tfmg.registry.TFMGBlocks; import com.drmangotea.tfmg.registry.TFMGPartialModels; -import com.simibubi.create.AllBlocks; import com.simibubi.create.AllPartialModels; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.content.kinetics.base.RotatingInstance; @@ -12,11 +11,9 @@ import com.simibubi.create.content.kinetics.simpleRelays.BracketedKineticBlockEn import com.simibubi.create.content.kinetics.simpleRelays.ICogWheel; import com.simibubi.create.foundation.render.AllInstanceTypes; import dev.engine_room.flywheel.api.instance.Instance; -import dev.engine_room.flywheel.api.material.Material; import dev.engine_room.flywheel.api.model.Model; import dev.engine_room.flywheel.api.visual.BlockEntityVisual; import dev.engine_room.flywheel.api.visualization.VisualizationContext; -import dev.engine_room.flywheel.lib.material.Materials; import dev.engine_room.flywheel.lib.model.Models; import net.minecraft.core.Direction; diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/cogs/TFMGEncasedCogRenderer.java b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/cogs/TFMGEncasedCogRenderer.java similarity index 97% rename from src/main/java/com/drmangotea/tfmg/content/decoration/cogs/TFMGEncasedCogRenderer.java rename to src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/cogs/TFMGEncasedCogRenderer.java index f166ecd2..b512a44b 100644 --- a/src/main/java/com/drmangotea/tfmg/content/decoration/cogs/TFMGEncasedCogRenderer.java +++ b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/cogs/TFMGEncasedCogRenderer.java @@ -1,4 +1,4 @@ -package com.drmangotea.tfmg.content.decoration.cogs; +package com.drmangotea.tfmg.content.decoration.kinetics.cogs; import com.drmangotea.tfmg.registry.TFMGPartialModels; import com.mojang.blaze3d.vertex.PoseStack; @@ -9,7 +9,6 @@ import com.simibubi.create.content.kinetics.simpleRelays.BracketedKineticBlockEn import com.simibubi.create.content.kinetics.simpleRelays.SimpleKineticBlockEntity; import com.simibubi.create.content.kinetics.simpleRelays.encased.EncasedCogwheelBlock; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import dev.engine_room.flywheel.lib.model.baked.PartialModel; import net.createmod.catnip.data.Iterate; import net.createmod.catnip.render.CachedBuffers; import net.createmod.catnip.render.SuperByteBuffer; diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/cogs/TFMGEncasedCogVisual.java b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/cogs/TFMGEncasedCogVisual.java similarity index 98% rename from src/main/java/com/drmangotea/tfmg/content/decoration/cogs/TFMGEncasedCogVisual.java rename to src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/cogs/TFMGEncasedCogVisual.java index 9680841e..16bbf010 100644 --- a/src/main/java/com/drmangotea/tfmg/content/decoration/cogs/TFMGEncasedCogVisual.java +++ b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/cogs/TFMGEncasedCogVisual.java @@ -1,4 +1,4 @@ -package com.drmangotea.tfmg.content.decoration.cogs; +package com.drmangotea.tfmg.content.decoration.kinetics.cogs; import com.drmangotea.tfmg.registry.TFMGPartialModels; import com.simibubi.create.AllPartialModels; diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/encased/TFMGEncasedCogwheelBlock.java b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/encased/TFMGEncasedCogwheelBlock.java similarity index 98% rename from src/main/java/com/drmangotea/tfmg/content/decoration/encased/TFMGEncasedCogwheelBlock.java rename to src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/encased/TFMGEncasedCogwheelBlock.java index 2286e76b..7b4d5179 100644 --- a/src/main/java/com/drmangotea/tfmg/content/decoration/encased/TFMGEncasedCogwheelBlock.java +++ b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/encased/TFMGEncasedCogwheelBlock.java @@ -1,4 +1,4 @@ -package com.drmangotea.tfmg.content.decoration.encased; +package com.drmangotea.tfmg.content.decoration.kinetics.encased; import com.drmangotea.tfmg.registry.TFMGBlockEntities; @@ -29,7 +29,6 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; 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.LevelReader; import net.minecraft.world.level.block.Block; @@ -41,7 +40,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; import java.util.function.Supplier; diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/encased/TFMGEncasedShaftBlock.java b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/encased/TFMGEncasedShaftBlock.java similarity index 95% rename from src/main/java/com/drmangotea/tfmg/content/decoration/encased/TFMGEncasedShaftBlock.java rename to src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/encased/TFMGEncasedShaftBlock.java index 38e61ed8..d4d2dd37 100644 --- a/src/main/java/com/drmangotea/tfmg/content/decoration/encased/TFMGEncasedShaftBlock.java +++ b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/encased/TFMGEncasedShaftBlock.java @@ -1,4 +1,4 @@ -package com.drmangotea.tfmg.content.decoration.encased; +package com.drmangotea.tfmg.content.decoration.kinetics.encased; import com.drmangotea.tfmg.registry.TFMGBlockEntities; @@ -16,14 +16,12 @@ import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.UseOnContext; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; import java.util.function.Supplier; diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/flywheels/TFMGFlywheelBlock.java b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/flywheels/TFMGFlywheelBlock.java similarity index 88% rename from src/main/java/com/drmangotea/tfmg/content/decoration/flywheels/TFMGFlywheelBlock.java rename to src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/flywheels/TFMGFlywheelBlock.java index e48745e9..20199dec 100644 --- a/src/main/java/com/drmangotea/tfmg/content/decoration/flywheels/TFMGFlywheelBlock.java +++ b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/flywheels/TFMGFlywheelBlock.java @@ -1,10 +1,11 @@ -package com.drmangotea.tfmg.content.decoration.flywheels; +package com.drmangotea.tfmg.content.decoration.kinetics.flywheels; import com.drmangotea.tfmg.registry.TFMGBlockEntities; import com.drmangotea.tfmg.registry.TFMGPartialModels; import com.simibubi.create.AllShapes; import com.simibubi.create.content.kinetics.base.RotatedPillarKineticBlock; +import com.simibubi.create.content.kinetics.flywheel.FlywheelBlockEntity; import com.simibubi.create.foundation.block.IBE; import dev.engine_room.flywheel.lib.model.baked.PartialModel; import net.minecraft.core.BlockPos; @@ -18,7 +19,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -public class TFMGFlywheelBlock extends RotatedPillarKineticBlock implements IBE { +public class TFMGFlywheelBlock extends RotatedPillarKineticBlock implements IBE { public final PartialModel model; @@ -46,8 +47,8 @@ public class TFMGFlywheelBlock extends RotatedPillarKineticBlock implements IBE< } @Override - public Class getBlockEntityClass() { - return TFMGFlywheelBlockEntity.class; + public Class getBlockEntityClass() { + return FlywheelBlockEntity.class; } @Override @@ -61,7 +62,7 @@ public class TFMGFlywheelBlock extends RotatedPillarKineticBlock implements IBE< } @Override - public BlockEntityType getBlockEntityType() { + public BlockEntityType getBlockEntityType() { return TFMGBlockEntities.TFMG_FLYWHEEL.get(); } diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/flywheels/TFMGFlywheelRenderer.java b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/flywheels/TFMGFlywheelRenderer.java similarity index 66% rename from src/main/java/com/drmangotea/tfmg/content/decoration/flywheels/TFMGFlywheelRenderer.java rename to src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/flywheels/TFMGFlywheelRenderer.java index 9a1ca08e..76669934 100644 --- a/src/main/java/com/drmangotea/tfmg/content/decoration/flywheels/TFMGFlywheelRenderer.java +++ b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/flywheels/TFMGFlywheelRenderer.java @@ -1,8 +1,10 @@ -package com.drmangotea.tfmg.content.decoration.flywheels; +package com.drmangotea.tfmg.content.decoration.kinetics.flywheels; +import com.drmangotea.tfmg.mixin.accessor.FlywheelBlockEntityMixin; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; +import com.simibubi.create.content.kinetics.flywheel.FlywheelBlockEntity; import dev.engine_room.flywheel.api.visualization.VisualizationManager; import net.createmod.catnip.math.AngleHelper; import net.createmod.catnip.render.CachedBuffers; @@ -12,14 +14,14 @@ import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.world.level.block.state.BlockState; -public class TFMGFlywheelRenderer extends KineticBlockEntityRenderer { +public class TFMGFlywheelRenderer extends KineticBlockEntityRenderer { public TFMGFlywheelRenderer(BlockEntityRendererProvider.Context context) { super(context); } @Override - protected void renderSafe(TFMGFlywheelBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer, + protected void renderSafe(FlywheelBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { super.renderSafe(be, partialTicks, ms, buffer, light, overlay); @@ -28,14 +30,14 @@ public class TFMGFlywheelRenderer extends KineticBlockEntityRenderer implements SimpleDynamicVisual { +public class TFMGFlywheelVisual extends KineticBlockEntityVisual implements SimpleDynamicVisual { protected final RotatingInstance shaft; protected final TransformedInstance wheel; @@ -32,7 +31,7 @@ public class TFMGFlywheelVisual extends KineticBlockEntityVisual { diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/gearbox/SteelVerticalGearboxItem.java b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/gearbox/SteelVerticalGearboxItem.java similarity index 97% rename from src/main/java/com/drmangotea/tfmg/content/decoration/gearbox/SteelVerticalGearboxItem.java rename to src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/gearbox/SteelVerticalGearboxItem.java index 4528238b..698eb8da 100644 --- a/src/main/java/com/drmangotea/tfmg/content/decoration/gearbox/SteelVerticalGearboxItem.java +++ b/src/main/java/com/drmangotea/tfmg/content/decoration/kinetics/gearbox/SteelVerticalGearboxItem.java @@ -1,4 +1,4 @@ -package com.drmangotea.tfmg.content.decoration.gearbox; +package com.drmangotea.tfmg.content.decoration.kinetics.gearbox; import com.drmangotea.tfmg.registry.TFMGBlocks; diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/generators/large_generator/RotorVisual.java b/src/main/java/com/drmangotea/tfmg/content/electricity/generators/large_generator/RotorVisual.java index 0b5104f2..f954a13f 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/generators/large_generator/RotorVisual.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/generators/large_generator/RotorVisual.java @@ -1,7 +1,5 @@ package com.drmangotea.tfmg.content.electricity.generators.large_generator; -import com.drmangotea.tfmg.content.decoration.flywheels.TFMGFlywheelBlock; -import com.drmangotea.tfmg.content.decoration.flywheels.TFMGFlywheelBlockEntity; import com.drmangotea.tfmg.registry.TFMGPartialModels; import com.simibubi.create.AllPartialModels; import com.simibubi.create.content.kinetics.base.KineticBlockEntityVisual; diff --git a/src/main/java/com/drmangotea/tfmg/content/items/weapons/explosives/thermite_grenades/ThermiteGrenade.java b/src/main/java/com/drmangotea/tfmg/content/items/weapons/explosives/thermite_grenades/ThermiteGrenade.java index b4c4fd48..84d42497 100644 --- a/src/main/java/com/drmangotea/tfmg/content/items/weapons/explosives/thermite_grenades/ThermiteGrenade.java +++ b/src/main/java/com/drmangotea/tfmg/content/items/weapons/explosives/thermite_grenades/ThermiteGrenade.java @@ -1,5 +1,6 @@ package com.drmangotea.tfmg.content.items.weapons.explosives.thermite_grenades; +import com.drmangotea.tfmg.TFMG; import com.drmangotea.tfmg.base.spark.BlueSpark; import com.drmangotea.tfmg.base.spark.GreenSpark; import com.drmangotea.tfmg.base.spark.Spark; @@ -25,20 +26,11 @@ public class ThermiteGrenade extends ThrowableItemProjectile { this.flameColor =ChemicalColor.BLUE; } - - - - public ThermiteGrenade(Level p_37399_, LivingEntity p_37400_, ChemicalColor color,EntityType grenade) { super(grenade, p_37400_, p_37399_); this.flameColor = color; } - public ThermiteGrenade(Level p_37394_, double p_37395_, double p_37396_, double p_37397_) { - super(TFMGEntityTypes.THERMITE_GRENADE.get(), p_37395_, p_37396_, p_37397_, p_37394_); - this.flameColor =ChemicalColor.BLUE; - } - protected Item getDefaultItem() { return TFMGItems.THERMITE_GRENADE.get(); } @@ -65,10 +57,11 @@ public class ThermiteGrenade extends ThrowableItemProjectile { } - protected void onHit(HitResult p_37406_) { - super.onHit(p_37406_); + protected void onHit(HitResult hitResult) { + super.onHit(hitResult); + + - if (!this.level().isClientSide) { this.level().broadcastEntityEvent(this, (byte) 3); for (int i=0; i<20;i++){ @@ -78,16 +71,22 @@ public class ThermiteGrenade extends ThrowableItemProjectile { if(flameColor==ChemicalColor.GREEN){ GreenSpark spark = TFMGEntityTypes.GREEN_SPARK.create(level()); + + + spark.moveTo(this.getX(), this.getY()+1, this.getZ()); spark.shootFromRotation( this,x,y,z,0.2f,1); this.level().addFreshEntity(spark); }else if(flameColor==ChemicalColor.BLUE){ BlueSpark spark = TFMGEntityTypes.BLUE_SPARK.create(level()); + + spark.moveTo(this.getX(), this.getY()+1, this.getZ()); spark.shootFromRotation( this,x,y,z,0.2f,1); this.level().addFreshEntity(spark); - } else { Spark spark = TFMGEntityTypes.SPARK.create(level()); + } else { + Spark spark = TFMGEntityTypes.SPARK.create(level()); spark.moveTo(this.getX(), this.getY()+1, this.getZ()); spark.shootFromRotation( this,x,y,z,0.2f,1); this.level().addFreshEntity(spark);} @@ -103,7 +102,7 @@ public class ThermiteGrenade extends ThrowableItemProjectile { this.level().explode(this, this.getX(), this.getY(0.0625D), this.getZ(), 2.0F, Level.ExplosionInteraction.NONE); this.discard(); - } + } diff --git a/src/main/java/com/drmangotea/tfmg/content/items/weapons/explosives/thermite_grenades/ThermiteGrenadeItem.java b/src/main/java/com/drmangotea/tfmg/content/items/weapons/explosives/thermite_grenades/ThermiteGrenadeItem.java index 3029ac12..b6cb70ec 100644 --- a/src/main/java/com/drmangotea/tfmg/content/items/weapons/explosives/thermite_grenades/ThermiteGrenadeItem.java +++ b/src/main/java/com/drmangotea/tfmg/content/items/weapons/explosives/thermite_grenades/ThermiteGrenadeItem.java @@ -24,7 +24,7 @@ public class ThermiteGrenadeItem extends Item { ItemStack itemstack = p_43143_.getItemInHand(p_43144_); p_43143_.getCooldowns().addCooldown(this, 60); p_43142_.playSound((Player)null, p_43143_.getX(), p_43143_.getY(), p_43143_.getZ(), SoundEvents.EGG_THROW, SoundSource.NEUTRAL, 0.5F, 0.4F / (p_43142_.getRandom().nextFloat() * 0.4F + 0.8F)); - if (!p_43142_.isClientSide) { + ThermiteGrenade grenade; if(flameColor== ThermiteGrenade.ChemicalColor.GREEN) { grenade = new ThermiteGrenade(p_43142_, p_43143_, flameColor, TFMGEntityTypes.ZINC_GRENADE.get()); @@ -36,7 +36,7 @@ public class ThermiteGrenadeItem extends Item { grenade.setItem(itemstack); grenade.shootFromRotation(p_43143_, p_43143_.getXRot(), p_43143_.getYRot(), 0.0F, 0.5F, 1.0F); p_43142_.addFreshEntity(grenade); - } + p_43143_.awardStat(Stats.ITEM_USED.get(this)); if (!p_43143_.getAbilities().instabuild) { diff --git a/src/main/java/com/drmangotea/tfmg/content/items/weapons/lithium_blade/LitLithiumBladeItem.java b/src/main/java/com/drmangotea/tfmg/content/items/weapons/lithium_blade/LitLithiumBladeItem.java index 68c23a0d..36812431 100644 --- a/src/main/java/com/drmangotea/tfmg/content/items/weapons/lithium_blade/LitLithiumBladeItem.java +++ b/src/main/java/com/drmangotea/tfmg/content/items/weapons/lithium_blade/LitLithiumBladeItem.java @@ -1,6 +1,8 @@ package com.drmangotea.tfmg.content.items.weapons.lithium_blade; +import com.drmangotea.tfmg.base.spark.LithiumSpark; +import com.drmangotea.tfmg.base.spark.Spark; import com.drmangotea.tfmg.registry.TFMGDataComponents; import com.drmangotea.tfmg.registry.TFMGEntityTypes; import com.drmangotea.tfmg.registry.TFMGItems; @@ -61,6 +63,8 @@ public class LitLithiumBladeItem extends SwordItem { LithiumSpark spark = TFMGEntityTypes.LITHIUM_SPARK.create(level); + + spark.setPos(player.getX(), player.getY() + 1.3, player.getZ()); diff --git a/src/main/java/com/drmangotea/tfmg/content/items/weapons/lithium_blade/LithiumSpark.java b/src/main/java/com/drmangotea/tfmg/content/items/weapons/lithium_blade/LithiumSpark.java deleted file mode 100644 index c6f6b6dd..00000000 --- a/src/main/java/com/drmangotea/tfmg/content/items/weapons/lithium_blade/LithiumSpark.java +++ /dev/null @@ -1,128 +0,0 @@ -package com.drmangotea.tfmg.content.items.weapons.lithium_blade; - -import com.drmangotea.tfmg.registry.TFMGEntityTypes; -import com.drmangotea.tfmg.registry.TFMGMobEffects; -import com.simibubi.create.content.trains.CubeParticleData; -import net.minecraft.core.particles.ParticleOptions; -import net.minecraft.core.particles.ParticleTypes; -import net.minecraft.network.syncher.SynchedEntityData; -import net.minecraft.util.Mth; -import net.minecraft.world.effect.MobEffectInstance; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.projectile.ThrowableProjectile; -import net.minecraft.world.level.Level; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.EntityHitResult; -import net.minecraft.world.phys.HitResult; -import net.minecraft.world.phys.Vec3; - -public class LithiumSpark extends ThrowableProjectile { - public LithiumSpark(EntityType p_37391_, Level p_37392_) { - super(p_37391_, p_37392_); - - } - public LithiumSpark(Level p_37399_, LivingEntity p_37400_) { - super(TFMGEntityTypes.LITHIUM_SPARK.get(), p_37400_, p_37399_); - } - - public LithiumSpark(Level p_37394_, double p_37395_, double p_37396_, double p_37397_) { - super(TFMGEntityTypes.LITHIUM_SPARK.get(), p_37395_, p_37396_, p_37397_, p_37394_); - } - - - @Override - protected double getDefaultGravity() { - return 0.02f; - } - - - @Override - protected void defineSynchedData(SynchedEntityData.Builder builder) { - - } - - public void tick(){ - super.tick(); - // if (this.isInWaterOrRain()) { - // this.discard(); - // } - if(this.level().isClientSide) { - - CubeParticleData data = - new CubeParticleData(100, 0, 0, .0125f + .0625f * random.nextFloat(), 30, false); - level().addParticle(data, this.getX(), this.getY(), this.getZ(), this.random.nextGaussian() * 0.05D, -this.getDeltaMovement().y * 0.5D, this.random.nextGaussian() * 0.05D); - - } - } - - - private ParticleOptions getParticle() { - - return ParticleTypes.FLAME; - } - - - public void burst(double pX, double pY, double pZ, float pVelocity, float pInaccuracy) { - Vec3 vec3 = (new Vec3(pX, pY, pZ)).normalize().add(this.random.triangle(0.0D, 0.0172275D * (double)pInaccuracy), 0, this.random.triangle(0.0D, 0.0172275D * (double)pInaccuracy)).scale((double)pVelocity); - this.setDeltaMovement(vec3); - double d0 = vec3.horizontalDistance(); - this.setYRot((float)(Mth.atan2(vec3.x, vec3.z) * (double)(180F / (float)Math.PI))); - this.setXRot((float)(Mth.atan2(vec3.y, d0) * (double)(180F / (float)Math.PI))); - this.yRotO = this.getYRot(); - this.xRotO = this.getXRot(); - } - - public void handleEntityEvent(byte p_37402_) { - if (p_37402_ == 3) { - ParticleOptions particleoptions = this.getParticle(); - - for(int i = 0; i < 8; ++i) { - this.level().addParticle(particleoptions, this.getX(), this.getY(), this.getZ(), 0.0D, 0.0D, 0.0D); - } - } - - } - protected void onHitBlock(BlockHitResult p_37384_) { - super.onHitBlock(p_37384_); - - } - - protected void onHitEntity(EntityHitResult p_37386_) { - super.onHitEntity(p_37386_); - if (!this.level().isClientSide) { - Entity entity = p_37386_.getEntity(); - Entity entity1 = this.getOwner(); - - - if(entity instanceof LivingEntity){ - - ((LivingEntity)entity).addEffect(new MobEffectInstance(TFMGMobEffects.HELLFIRE,60)); - - - } - - - } - } - - protected void onHit(HitResult p_37406_) { - super.onHit(p_37406_); - - if (!this.level().isClientSide) { - this.level().broadcastEntityEvent(this, (byte)3); - - - //this.level.explode(this, this.getX(), this.getY(0.0625D), this.getZ(), 2.0F, Explosion.BlockInteraction.NONE); - this.discard(); - } - - } - - @SuppressWarnings("unchecked") - public static EntityType.Builder build(EntityType.Builder builder) { - EntityType.Builder entityBuilder = (EntityType.Builder) builder; - return entityBuilder.sized(.25f, .25f); - } -} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/content/items/weapons/lithium_blade/LithiumSparkRenderer.java b/src/main/java/com/drmangotea/tfmg/content/items/weapons/lithium_blade/LithiumSparkRenderer.java deleted file mode 100644 index fdab4d0a..00000000 --- a/src/main/java/com/drmangotea/tfmg/content/items/weapons/lithium_blade/LithiumSparkRenderer.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.drmangotea.tfmg.content.items.weapons.lithium_blade; - - -import com.drmangotea.tfmg.TFMG; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import com.mojang.math.Axis; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.entity.EntityRenderer; -import net.minecraft.client.renderer.entity.EntityRendererProvider; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.core.BlockPos; -import net.minecraft.resources.ResourceLocation; - - -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; -import org.joml.Matrix3f; -import org.joml.Matrix4f; - -@OnlyIn(Dist.CLIENT) -public class LithiumSparkRenderer extends EntityRenderer { - private static final ResourceLocation TEXTURE_LOCATION = TFMG.asResource("textures/entity/lithium_spark.png"); - private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION); - - public LithiumSparkRenderer(EntityRendererProvider.Context p_173962_) { - super(p_173962_); - } - - - - protected int getBlockLightLevel(LithiumSpark p_114087_, BlockPos p_114088_) { - return 15; - } - - public void render(LithiumSpark p_114080_, float p_114081_, float p_114082_, PoseStack p_114083_, MultiBufferSource p_114084_, int p_114085_) { - p_114083_.pushPose(); - p_114083_.scale(0.5F, 0.5F, 0.5F); - p_114083_.mulPose(this.entityRenderDispatcher.cameraOrientation()); - p_114083_.mulPose(Axis.YP.rotationDegrees(180.0F)); - PoseStack.Pose posestack$pose = p_114083_.last(); - Matrix4f matrix4f = posestack$pose.pose(); - Matrix3f matrix3f = posestack$pose.normal(); - VertexConsumer vertexconsumer = p_114084_.getBuffer(RENDER_TYPE); - vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 0.0F, 0, 0, 1); - vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 1.0F, 0, 1, 1); - vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 1.0F, 1, 1, 0); - vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 0.0F, 1, 0, 0); - p_114083_.popPose(); - super.render(p_114080_, p_114081_, p_114082_, p_114083_, p_114084_, p_114085_); - } - - private static void vertex(VertexConsumer p_114090_, Matrix4f p_114091_, Matrix3f p_114092_, int p_114093_, float p_114094_, int p_114095_, int p_114096_, int p_114097_) { - p_114090_.addVertex(p_114091_, p_114094_ - 0.5F, (float)p_114095_ - 0.25F, 0.0F).setColor(255, 255, 255, 255).setUv((float)p_114096_, (float)p_114097_).setOverlay(OverlayTexture.NO_OVERLAY).setUv2(p_114093_,p_114093_).setNormal( 0.0F, 1.0F, 0.0F); - } - - public ResourceLocation getTextureLocation(LithiumSpark p_114078_) { - return TEXTURE_LOCATION; - } -} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/mixin/accessor/FlywheelBlockEntityMixin.java b/src/main/java/com/drmangotea/tfmg/mixin/accessor/FlywheelBlockEntityMixin.java new file mode 100644 index 00000000..ae4d315a --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/mixin/accessor/FlywheelBlockEntityMixin.java @@ -0,0 +1,18 @@ +package com.drmangotea.tfmg.mixin.accessor; + +import com.simibubi.create.content.kinetics.flywheel.FlywheelBlockEntity; +import net.createmod.catnip.animation.LerpedFloat; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(FlywheelBlockEntity.class) +public interface FlywheelBlockEntityMixin { + + + @Accessor("angle") + float tfmg$angle(); + + @Accessor("visualSpeed") + LerpedFloat tfmg$visualSpeed(); + +} diff --git a/src/main/java/com/drmangotea/tfmg/mixin/accessor/SlidingDoorBlockEntityAccessor.java b/src/main/java/com/drmangotea/tfmg/mixin/accessor/SlidingDoorBlockEntityAccessor.java new file mode 100644 index 00000000..236d61a8 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/mixin/accessor/SlidingDoorBlockEntityAccessor.java @@ -0,0 +1,18 @@ +package com.drmangotea.tfmg.mixin.accessor; + +import com.simibubi.create.content.decoration.slidingDoor.SlidingDoorBlockEntity; +import net.createmod.catnip.animation.LerpedFloat; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(SlidingDoorBlockEntity.class) +public interface SlidingDoorBlockEntityAccessor { + + @Accessor("animation") + LerpedFloat i_architecture$getAnimation(); + + @Invoker("shouldRenderSpecial") + boolean i_architecture$shouldRenderSpecial(BlockState state); +} diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java index 326a0bdf..c63f45d3 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java @@ -1,12 +1,10 @@ package com.drmangotea.tfmg.registry; import com.drmangotea.tfmg.base.HalfShaftRenderer; -import com.drmangotea.tfmg.content.decoration.cogs.*; -import com.drmangotea.tfmg.content.decoration.doors.TFMGSlidingDoorBlockEntity; +import com.drmangotea.tfmg.content.decoration.kinetics.cogs.*; import com.drmangotea.tfmg.content.decoration.doors.TFMGSlidingDoorRenderer; -import com.drmangotea.tfmg.content.decoration.flywheels.TFMGFlywheelBlockEntity; -import com.drmangotea.tfmg.content.decoration.flywheels.TFMGFlywheelRenderer; -import com.drmangotea.tfmg.content.decoration.flywheels.TFMGFlywheelVisual; +import com.drmangotea.tfmg.content.decoration.kinetics.flywheels.TFMGFlywheelRenderer; +import com.drmangotea.tfmg.content.decoration.kinetics.flywheels.TFMGFlywheelVisual; import com.drmangotea.tfmg.content.decoration.pipes.TFMGPipeBlockEntity; import com.drmangotea.tfmg.content.decoration.pipes.TFMGPipes; import com.drmangotea.tfmg.content.decoration.tanks.TFMGFluidTankBlockEntity; @@ -47,8 +45,6 @@ import com.drmangotea.tfmg.content.electricity.utilities.potentiometer.Potentiom import com.drmangotea.tfmg.content.electricity.utilities.resistor.ResistorBlockEntity; import com.drmangotea.tfmg.content.electricity.utilities.segmented_display.SegmentedDisplayBlockEntity; import com.drmangotea.tfmg.content.electricity.utilities.segmented_display.SegmentedDisplayRenderer; -import com.drmangotea.tfmg.content.electricity.utilities.segmented_display.SegmentedDisplaySource; -import com.drmangotea.tfmg.content.electricity.utilities.segmented_display.SegmentedDisplayTarget; import com.drmangotea.tfmg.content.electricity.utilities.traffic_light.TrafficLightBlockEntity; import com.drmangotea.tfmg.content.electricity.utilities.traffic_light.TrafficLightRenderer; import com.drmangotea.tfmg.content.electricity.utilities.transformer.TransformerBlockEntity; @@ -103,6 +99,7 @@ import com.drmangotea.tfmg.content.machinery.vat.industrial_mixer.IndustrialMixe import com.drmangotea.tfmg.content.machinery.vat.industrial_mixer.IndustrialMixerRenderer; import com.drmangotea.tfmg.content.machinery.vat.industrial_mixer.IndustrialMixerVisual; import com.simibubi.create.AllPartialModels; +import com.simibubi.create.content.decoration.slidingDoor.SlidingDoorBlockEntity; import com.simibubi.create.content.fluids.pipes.FluidPipeBlockEntity; import com.simibubi.create.content.fluids.pipes.SmartFluidPipeBlockEntity; import com.simibubi.create.content.fluids.pipes.StraightPipeBlockEntity; @@ -113,6 +110,7 @@ import com.simibubi.create.content.fluids.pipes.valve.FluidValveVisual; import com.simibubi.create.content.fluids.pump.PumpBlockEntity; import com.simibubi.create.content.fluids.pump.PumpRenderer; import com.simibubi.create.content.kinetics.base.*; +import com.simibubi.create.content.kinetics.flywheel.FlywheelBlockEntity; import com.simibubi.create.content.kinetics.gearbox.GearboxBlockEntity; import com.simibubi.create.content.kinetics.gearbox.GearboxRenderer; import com.simibubi.create.content.kinetics.gearbox.GearboxVisual; @@ -299,8 +297,8 @@ public class TFMGBlockEntities { .validBlocks(TFMGBlocks.POTENTIOMETER, TFMGBlocks.ENCASED_POTENTIOMETER) .register(); - public static final BlockEntityEntry TFMG_SLIDING_DOOR = - REGISTRATE.blockEntity("tfmg_sliding_door", TFMGSlidingDoorBlockEntity::new) + public static final BlockEntityEntry TFMG_SLIDING_DOOR = + REGISTRATE.blockEntity("tfmg_sliding_door", SlidingDoorBlockEntity::new) .renderer(() -> TFMGSlidingDoorRenderer::new) .validBlocks(TFMGBlocks.HEAVY_CASING_DOOR, TFMGBlocks.STEEL_CASING_DOOR, TFMGBlocks.HEAVY_PLATED_DOOR, TFMGBlocks.ALUMINUM_DOOR) .register(); @@ -456,8 +454,8 @@ public class TFMGBlockEntities { .renderer(() -> GearboxRenderer::new) .register(); - public static final BlockEntityEntry TFMG_FLYWHEEL = REGISTRATE - .blockEntity("steel_flywheel", TFMGFlywheelBlockEntity::new) + public static final BlockEntityEntry TFMG_FLYWHEEL = REGISTRATE + .blockEntity("steel_flywheel", FlywheelBlockEntity::new) .visual(() -> TFMGFlywheelVisual::new, false) .validBlocks( TFMGBlocks.STEEL_FLYWHEEL, diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java index e1d106da..fcc39339 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java @@ -6,12 +6,13 @@ import com.drmangotea.tfmg.base.blocks.TFMGDirectionalBlock; import com.drmangotea.tfmg.base.blocks.TFMGVanillaBlockStates; import com.drmangotea.tfmg.config.TFMGStress; import com.drmangotea.tfmg.content.decoration.*; -import com.drmangotea.tfmg.content.decoration.cogs.TFMGCogWheelBlock; -import com.drmangotea.tfmg.content.decoration.cogs.TFMGCogwheelBlockItem; +import com.drmangotea.tfmg.content.decoration.kinetics.cogs.TFMGCogWheelBlock; +import com.drmangotea.tfmg.content.decoration.kinetics.cogs.TFMGCogwheelBlockItem; import com.drmangotea.tfmg.content.decoration.concrete.*; import com.drmangotea.tfmg.content.decoration.doors.TFMGSlidingDoorBlock; -import com.drmangotea.tfmg.content.decoration.flywheels.TFMGFlywheelBlock; -import com.drmangotea.tfmg.content.decoration.gearbox.SteelGearboxBlock; +import com.drmangotea.tfmg.content.decoration.kinetics.flywheels.TFMGFlywheelBlock; +import com.drmangotea.tfmg.content.decoration.kinetics.gearbox.SteelGearboxBlock; +import com.drmangotea.tfmg.content.decoration.tanks.TFMGTankGenerator; import com.drmangotea.tfmg.content.decoration.tanks.aluminum.AluminumFluidTankModel; import com.drmangotea.tfmg.content.decoration.tanks.aluminum.AluminumTankBlock; import com.drmangotea.tfmg.content.decoration.tanks.aluminum.AluminumTankItem; @@ -20,7 +21,6 @@ import com.drmangotea.tfmg.content.decoration.tanks.cast_iron.CastIronTankBlock; import com.drmangotea.tfmg.content.decoration.tanks.cast_iron.CastIronTankItem; import com.drmangotea.tfmg.content.decoration.tanks.steel.SteelFluidTankModel; import com.drmangotea.tfmg.content.decoration.tanks.steel.SteelTankBlock; -import com.drmangotea.tfmg.content.decoration.tanks.TFMGTankGenerator; import com.drmangotea.tfmg.content.decoration.tanks.steel.SteelTankItem; import com.drmangotea.tfmg.content.electricity.connection.CableHubBlock; import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnectorBlock; @@ -50,8 +50,8 @@ import com.drmangotea.tfmg.content.electricity.utilities.electric_motor.Electric import com.drmangotea.tfmg.content.electricity.utilities.electric_pump.ElectricPumpBlock; import com.drmangotea.tfmg.content.electricity.utilities.electric_switch.ElectricSwitchBlock; import com.drmangotea.tfmg.content.electricity.utilities.polarizer.PolarizerBlock; -import com.drmangotea.tfmg.content.electricity.utilities.potentiometer.PotentiometerBlock; import com.drmangotea.tfmg.content.electricity.utilities.potentiometer.EncasedPotentiometerBlock; +import com.drmangotea.tfmg.content.electricity.utilities.potentiometer.PotentiometerBlock; import com.drmangotea.tfmg.content.electricity.utilities.resistor.ResistorBlock; import com.drmangotea.tfmg.content.electricity.utilities.resistor.ResistorBlockItem; import com.drmangotea.tfmg.content.electricity.utilities.segmented_display.SegmentedDisplayBlock; @@ -111,7 +111,6 @@ import com.drmangotea.tfmg.content.machinery.vat.base.VatBlock; import com.drmangotea.tfmg.content.machinery.vat.base.VatGenerator; import com.drmangotea.tfmg.content.machinery.vat.electrode_holder.ElectrodeHolderBlock; import com.drmangotea.tfmg.content.machinery.vat.industrial_mixer.IndustrialMixerBlock; -import com.simibubi.create.AllDisplaySources; import com.simibubi.create.AllTags; import com.simibubi.create.api.stress.BlockStressValues; import com.simibubi.create.content.contraptions.bearing.StabilizedBearingMovementBehaviour; @@ -161,7 +160,6 @@ import static com.simibubi.create.foundation.data.CreateRegistrate.casingConnect import static com.simibubi.create.foundation.data.CreateRegistrate.connectedTextures; import static com.simibubi.create.foundation.data.ModelGen.customItemModel; import static com.simibubi.create.foundation.data.TagGen.*; -import static com.simibubi.create.foundation.data.TagGen.tagBlockAndItem; @SuppressWarnings("removal") public class TFMGBlocks { @@ -169,9 +167,9 @@ public class TFMGBlocks { public static final String[] TFMG_DECOR_METALS = {"steel", "aluminum", "lead", "cast_iron"}; - static { - REGISTRATE.setCreativeTab(TFMGCreativeTabs.TFMG_MAIN); - } + static { + REGISTRATE.setCreativeTab(TFMGCreativeTabs.TFMG_MAIN); + } //------------------ENGINES------------------// @@ -207,7 +205,7 @@ public class TFMGBlocks { .transform(customItemModel()) .register(); public static final BlockEntry LARGE_ENGINE = REGISTRATE.block("large_engine", LargeEngineBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .properties(BlockBehaviour.Properties::noOcclusion) .transform(TFMGStress.setCapacity(55)) @@ -216,7 +214,7 @@ public class TFMGBlocks { .transform(customItemModel()) .register(); public static final BlockEntry SIMPLE_LARGE_ENGINE = REGISTRATE.block("simple_large_engine", LargeEngineBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .properties(BlockBehaviour.Properties::noOcclusion) .transform(TFMGStress.setCapacity(40)) @@ -226,7 +224,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry ENGINE_GEARBOX = REGISTRATE.block("engine_gearbox", EngineGearboxBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .properties(BlockBehaviour.Properties::noOcclusion) .blockstate(BlockStateGen.horizontalBlockProvider(true)) @@ -235,7 +233,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry ENGINE_CONTROLLER = REGISTRATE.block("engine_controller", EngineControllerBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .properties(BlockBehaviour.Properties::noOcclusion) .blockstate(BlockStateGen.horizontalBlockProvider(true)) @@ -245,7 +243,7 @@ public class TFMGBlocks { //------------------TANKS------------------// public static final BlockEntry ALUMINUM_FLUID_TANK = REGISTRATE.block("aluminum_fluid_tank", AluminumTankBlock::regular) - .initialProperties(SharedProperties::copperMetal) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.sound(SoundType.COPPER)) .properties(BlockBehaviour.Properties::noOcclusion) .properties(p -> p.isRedstoneConductor((p1, p2, p3) -> true)) @@ -261,7 +259,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry CAST_IRON_FLUID_TANK = REGISTRATE.block("cast_iron_fluid_tank", CastIronTankBlock::regular) - .initialProperties(SharedProperties::copperMetal) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.sound(SoundType.METAL)) .properties(BlockBehaviour.Properties::noOcclusion) .transform(mountedFluidStorage(TFMGMountedStorageTypes.TFMG_FLUID_TANK)) @@ -279,7 +277,7 @@ public class TFMGBlocks { //------------------DISTILLATION_TOWER------------------// public static final BlockEntry STEEL_FLUID_TANK = REGISTRATE.block("steel_fluid_tank", SteelTankBlock::regular) - .initialProperties(SharedProperties::copperMetal) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .properties(BlockBehaviour.Properties::noOcclusion) .properties(p -> p.isRedstoneConductor((p1, p2, p3) -> true)) @@ -296,7 +294,7 @@ public class TFMGBlocks { public static final BlockEntry STEEL_DISTILLATION_OUTPUT = REGISTRATE.block("steel_distillation_output", DistillationOutputBlock::new) - .initialProperties(SharedProperties::copperMetal) + .initialProperties(SharedProperties::softMetal) .blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov))) .properties(BlockBehaviour.Properties::noOcclusion) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) @@ -306,7 +304,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry STEEL_DISTILLATION_CONTROLLER = REGISTRATE.block("steel_distillation_controller", DistillationControllerBlock::new) - .initialProperties(SharedProperties::copperMetal) + .initialProperties(SharedProperties::softMetal) .blockstate(BlockStateGen.horizontalBlockProvider(true)) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .transform(pickaxeOnly()) @@ -314,18 +312,17 @@ public class TFMGBlocks { .build() .register(); public static final BlockEntry INDUSTRIAL_PIPE = REGISTRATE.block("industrial_pipe", IndustrialPipeBlock::new) - .initialProperties(() -> Blocks.STONE) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.requiresCorrectToolForDrops()) .properties(p -> p.sound(SoundType.STONE)) .transform(pickaxeOnly()) .tag(TFMGTags.TFMGBlockTags.INDUSTRIAL_PIPE.tag) .recipe((c, p) -> p.stonecutting(DataIngredient.tag(AllTags.commonItemTag("ingots/steel")), RecipeCategory.BUILDING_BLOCKS, c::get, 8)) .blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov))) - .item() - .build() + .simpleItem() .register(); public static final BlockEntry CONCRETE_ENCASED_INDUSTRIAL_PIPE = REGISTRATE.block("concrete_encased_industrial_pipe", Block::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.requiresCorrectToolForDrops().noOcclusion()) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .transform(pickaxeOnly()) @@ -351,7 +348,7 @@ public class TFMGBlocks { public static final BlockEntry PUMPJACK_CRANK = REGISTRATE.block("pumpjack_crank", PumpjackCrankBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .blockstate(BlockStateGen.horizontalBlockProvider(true)) .properties(BlockBehaviour.Properties::noOcclusion) @@ -361,72 +358,62 @@ public class TFMGBlocks { .register(); public static final BlockEntry PUMPJACK_HAMMER_PART = REGISTRATE.block("pumpjack_hammer_part", PumpjackHammerPartBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) - + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) .blockstate(BlockStateGen.horizontalBlockProvider(false)) .tag(TFMGTags.TFMGBlockTags.PUMPJACK_SMALL_PART.tag) .recipe((c, p) -> p.stonecutting(DataIngredient.tag(AllTags.commonItemTag("storage_blocks/steel")), RecipeCategory.DECORATIONS, c::get, 2)) - .item() - .build() + .simpleItem() .register(); public static final BlockEntry PUMPJACK_HAMMER_HEAD = REGISTRATE.block("pumpjack_hammer_head", PumpjackHammerHeadBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) .blockstate(BlockStateGen.horizontalBlockProvider(false)) .tag(TFMGTags.TFMGBlockTags.PUMPJACK_HEAD.tag) - - - .item() - .build() + .simpleItem() .register(); public static final BlockEntry PUMPJACK_HAMMER_CONNECTOR = REGISTRATE.block("pumpjack_hammer_connector", PumpjackHammerConnectorBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) .blockstate(BlockStateGen.horizontalBlockProvider(false)) .tag(TFMGTags.TFMGBlockTags.PUMPJACK_CONNECTOR.tag) - .item() - .build() + .simpleItem() .register(); public static final BlockEntry LARGE_PUMPJACK_HAMMER_PART = REGISTRATE.block("large_pumpjack_hammer_part", LargePumpjackHammerPartBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .blockstate(BlockStateGen.horizontalBlockProvider(false)) .tag(TFMGTags.TFMGBlockTags.PUMPJACK_PART.tag) .recipe((c, p) -> p.stonecutting(DataIngredient.tag(AllTags.commonItemTag("storage_blocks/steel")), RecipeCategory.DECORATIONS, c::get, 2)) - .item() - .build() + .simpleItem() .register(); public static final BlockEntry LARGE_PUMPJACK_HAMMER_HEAD = REGISTRATE.block("large_pumpjack_hammer_head", LargePumpjackHammerHeadBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .blockstate(BlockStateGen.horizontalBlockProvider(false)) .tag(TFMGTags.TFMGBlockTags.PUMPJACK_HEAD.tag) - .item() - .build() + .simpleItem() .register(); public static final BlockEntry LARGE_PUMPJACK_HAMMER_CONNECTOR = REGISTRATE.block("large_pumpjack_hammer_connector", LargePumpjackHammerConnectorBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .blockstate(BlockStateGen.horizontalBlockProvider(false)) .tag(TFMGTags.TFMGBlockTags.PUMPJACK_CONNECTOR.tag) - .item() - .build() + .simpleItem() .register(); public static final BlockEntry PUMPJACK_BASE = REGISTRATE.block("pumpjack_base", PumpjackBaseBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) .blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov))) - .item() - .build() + .simpleItem() .register(); public static final BlockEntry OIL_DEPOSIT = REGISTRATE.block("oil_deposit", Block::new) .initialProperties(() -> Blocks.BEDROCK) @@ -440,8 +427,7 @@ public class TFMGBlocks { .tag(BlockTags.INFINIBURN_OVERWORLD) .tag(BlockTags.FEATURES_CANNOT_REPLACE) .tag(AllTags.AllBlockTags.NON_MOVABLE.tag) - .item() - .build() + .simpleItem() .register(); //------------------VAT_MACHINES------------------// @SuppressWarnings("'addLayer(java.util.function.Supplier>)' is deprecated and marked for removal ") @@ -512,9 +498,8 @@ public class TFMGBlocks { .requiresCorrectToolForDrops() .sound(SoundType.STONE)) .transform(pickaxeOnly()) - .loot((lt, b) -> { + .loot((lt, b) -> { HolderLookup.RegistryLookup enchantmentRegistryLookup = lt.getRegistries().lookupOrThrow(Registries.ENCHANTMENT); - lt.add(b, lt.createSilkTouchDispatchTable(b, lt.applyExplosionDecay(b, LootItem.lootTableItem(TFMGItems.RAW_LEAD.get()) @@ -533,7 +518,7 @@ public class TFMGBlocks { .requiresCorrectToolForDrops() .sound(SoundType.DEEPSLATE)) .transform(pickaxeOnly()) - .loot((lt, b) -> { + .loot((lt, b) -> { HolderLookup.RegistryLookup enchantmentRegistryLookup = lt.getRegistries().lookupOrThrow(Registries.ENCHANTMENT); lt.add(b, @@ -554,7 +539,7 @@ public class TFMGBlocks { .requiresCorrectToolForDrops() .sound(SoundType.STONE)) .transform(pickaxeOnly()) - .loot((lt, b) -> { + .loot((lt, b) -> { HolderLookup.RegistryLookup enchantmentRegistryLookup = lt.getRegistries().lookupOrThrow(Registries.ENCHANTMENT); lt.add(b, @@ -575,7 +560,7 @@ public class TFMGBlocks { .requiresCorrectToolForDrops() .sound(SoundType.DEEPSLATE)) .transform(pickaxeOnly()) - .loot((lt, b) -> { + .loot((lt, b) -> { HolderLookup.RegistryLookup enchantmentRegistryLookup = lt.getRegistries().lookupOrThrow(Registries.ENCHANTMENT); lt.add(b, @@ -596,7 +581,7 @@ public class TFMGBlocks { .requiresCorrectToolForDrops() .sound(SoundType.STONE)) .transform(pickaxeOnly()) - .loot((lt, b) -> { + .loot((lt, b) -> { HolderLookup.RegistryLookup enchantmentRegistryLookup = lt.getRegistries().lookupOrThrow(Registries.ENCHANTMENT); lt.add(b, @@ -617,7 +602,7 @@ public class TFMGBlocks { .requiresCorrectToolForDrops() .sound(SoundType.DEEPSLATE)) .transform(pickaxeOnly()) - .loot((lt, b) -> { + .loot((lt, b) -> { HolderLookup.RegistryLookup enchantmentRegistryLookup = lt.getRegistries().lookupOrThrow(Registries.ENCHANTMENT); lt.add(b, @@ -634,14 +619,12 @@ public class TFMGBlocks { public static final BlockEntry SULFUR = REGISTRATE.block("sulfur", Block::new) .initialProperties(() -> Blocks.CALCITE) .transform(pickaxeOnly()) - .item() - .build() + .simpleItem() .register(); public static final BlockEntry LIGNITE = REGISTRATE.block("lignite", Block::new) .initialProperties(() -> Blocks.CALCITE) .transform(pickaxeOnly()) - .item() - .build() + .simpleItem() .register(); public static final BlockEntry FIRECLAY = REGISTRATE.block("fireclay", Block::new) .initialProperties(() -> Blocks.CLAY) @@ -656,9 +639,7 @@ public class TFMGBlocks { .properties(p -> p.strength(100f, 1200f)) .properties(p -> p.requiresCorrectToolForDrops()) .transform(pickaxeOnly()) - .item() - .build() - .lang("Fossilstone") + .simpleItem() .register(); public static final BlockEntry SLAG_BLOCK = REGISTRATE.block("slag_block", Block::new) @@ -795,8 +776,7 @@ public class TFMGBlocks { .transform(pickaxeOnly()) .tag(TFMGTags.TFMGBlockTags.BLAST_FURNACE_WALL.tag) .tag(BlockTags.NEEDS_STONE_TOOL) - .item() - .build() + .simpleItem() .register(); public static final BlockEntry REINFORCED_FIREPROOF_BRICKS = REGISTRATE.block("reinforced_fireproof_bricks", Block::new) @@ -810,7 +790,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry BLAST_FURNACE_REINFORCEMENT = REGISTRATE.block("blast_furnace_reinforcement", Block::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(BlockBehaviour.Properties::requiresCorrectToolForDrops) .transform(pickaxeOnly()) .onRegister(connectedTextures(() -> new HorizontalCTBehaviour(TFMGSpriteShifts.BLAST_FURNACE_REINFORCEMENT))) @@ -821,7 +801,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry BLAST_FURNACE_REINFORCEMENT_WALL = REGISTRATE.block("blast_furnace_reinforcement_wall", BlastFurnaceReinforcementWallBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(BlockBehaviour.Properties::requiresCorrectToolForDrops) .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) @@ -832,7 +812,7 @@ public class TFMGBlocks { .register(); // public static final BlockEntry RUSTED_BLAST_FURNACE_REINFORCEMENT = REGISTRATE.block("rusted_blast_furnace_reinforcement", Block::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(BlockBehaviour.Properties::requiresCorrectToolForDrops) .transform(pickaxeOnly()) .onRegister(connectedTextures(() -> new HorizontalCTBehaviour(TFMGSpriteShifts.RUSTED_BLAST_FURNACE_REINFORCEMENT))) @@ -843,7 +823,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry RUSTED_BLAST_FURNACE_REINFORCEMENT_WALL = REGISTRATE.block("rusted_blast_furnace_reinforcement_wall", BlastFurnaceReinforcementWallBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(BlockBehaviour.Properties::requiresCorrectToolForDrops) .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) @@ -866,7 +846,6 @@ public class TFMGBlocks { .build() .register(); - public static final BlockEntry COKE_OVEN = REGISTRATE.block("coke_oven", CokeOvenBlock::new) .initialProperties(() -> Blocks.BRICKS) .properties(p -> p.requiresCorrectToolForDrops()) @@ -889,7 +868,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry CASTING_BASIN = REGISTRATE.block("casting_basin", CastingBasinBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.requiresCorrectToolForDrops().noOcclusion()) .transform(pickaxeOnly()) .blockstate(BlockStateGen.horizontalBlockProvider(true)) @@ -901,7 +880,7 @@ public class TFMGBlocks { //------------------GADGETS------------------// public static final BlockEntry NAPALM_BOMB = REGISTRATE.block("napalm_bomb", NapalmBombBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.requiresCorrectToolForDrops()) .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) @@ -913,7 +892,7 @@ public class TFMGBlocks { public static final BlockEntry GENERATOR = REGISTRATE.block("generator", GeneratorBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) .transform(TFMGStress.setImpact(50.0f)) @@ -947,7 +926,7 @@ public class TFMGBlocks { public static final BlockEntry RESISTOR = REGISTRATE.block("resistor", ResistorBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) .addLayer(() -> RenderType::cutoutMipped) @@ -973,7 +952,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry BRASS_CABLE_HUB = REGISTRATE.block("brass_cable_hub", CableHubBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .item() .build() @@ -988,28 +967,28 @@ public class TFMGBlocks { .register(); public static final BlockEntry STEEL_CABLE_HUB = REGISTRATE.block("steel_cable_hub", CableHubBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .item() .build() .register(); public static final BlockEntry ALUMINUM_CABLE_HUB = REGISTRATE.block("aluminum_cable_hub", CableHubBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .item() .build() .register(); public static final BlockEntry STEEL_CASING_CABLE_HUB = REGISTRATE.block("steel_casing_cable_hub", CableHubBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .item() .build() .register(); public static final BlockEntry HEAVY_CABLE_HUB = REGISTRATE.block("heavy_cable_hub", CableHubBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .item() .build() @@ -1017,7 +996,7 @@ public class TFMGBlocks { public static final BlockEntry CABLE_TUBE = REGISTRATE.block("cable_tube", p -> new CableTubeBlock(p, false)) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .properties(p -> p.noOcclusion()) .blockstate(BlockStateGen.axisBlockProvider(false)) @@ -1035,7 +1014,7 @@ public class TFMGBlocks { public static final BlockEntry ELECTRIC_POST = REGISTRATE.block("electric_post", p -> new CableTubeBlock(p, false)) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .blockstate(BlockStateGen.axisBlockProvider(false)) .transform(pickaxeOnly()) .item() @@ -1052,7 +1031,7 @@ public class TFMGBlocks { public static final BlockEntry DIAGONAL_CABLE_BLOCK = REGISTRATE.block("diagonal_cable_block", DiagonalCableBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .addLayer(() -> RenderType::cutoutMipped) .blockstate(new DiagonalCableGenerator()::generate) @@ -1063,7 +1042,7 @@ public class TFMGBlocks { public static final BlockEntry ELECTRIC_MOTOR = REGISTRATE.block("electric_motor", ElectricMotorBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) .blockstate(new CreativeMotorGenerator()::generate) @@ -1074,7 +1053,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry CREATIVE_GENERATOR = REGISTRATE.block("creative_generator", CreativeGeneratorBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.requiresCorrectToolForDrops()) .transform(pickaxeOnly()) .simpleItem() @@ -1082,7 +1061,7 @@ public class TFMGBlocks { public static final BlockEntry ACCUMULATOR = REGISTRATE.block("accumulator", AccumulatorBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .onRegister(connectedTextures(() -> new CapacitorCTBehavior(TFMGSpriteShifts.ACCUMULATOR))) .blockstate(BlockStateGen.directionalBlockProvider(true)) @@ -1092,7 +1071,7 @@ public class TFMGBlocks { ; public static final BlockEntry LIGHT_BULB = REGISTRATE.block("light_bulb", p -> new LightBulbBlock(p, TFMGBlockEntities.LIGHT_BULB, TFMGShapes.LIGHT_BULB)) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.lightLevel(s -> s.getValue(LIGHT))) .transform(pickaxeOnly()) .addLayer(() -> RenderType::cutoutMipped) @@ -1103,7 +1082,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry CIRCULAR_LIGHT = REGISTRATE.block("circular_light", p -> new LightBulbBlock(p, TFMGBlockEntities.CIRCULAR_LIGHT, TFMGShapes.CIRCULAR_LIGHT)) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.lightLevel(s -> s.getValue(LIGHT))) .transform(pickaxeOnly()) .addLayer(() -> RenderType::cutoutMipped) @@ -1115,7 +1094,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry MODERN_LIGHT = REGISTRATE.block("modern_light", p -> new LightBulbBlock(p, TFMGBlockEntities.MODERN_LIGHT, TFMGShapes.MODERN_LIGHT)) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.lightLevel(s -> s.getValue(LIGHT))) .transform(pickaxeOnly()) .addLayer(() -> RenderType::cutoutMipped) @@ -1127,7 +1106,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry ALUMINUM_LAMP = REGISTRATE.block("aluminum_lamp", p -> new LightBulbBlock(p, TFMGBlockEntities.ALUMINUM_LAMP, TFMGShapes.ALUMINUM_LAMP)) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.lightLevel(s -> s.getValue(LIGHT))) .transform(pickaxeOnly()) .addLayer(() -> RenderType::cutoutMipped) @@ -1152,7 +1131,7 @@ public class TFMGBlocks { public static final BlockEntry DIODE = REGISTRATE.block("electric_diode", ElectricDiodeBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) .blockstate(new CreativeMotorGenerator()::generate) @@ -1162,7 +1141,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry ENCASED_DIODE = REGISTRATE.block("encased_diode", EncasedDiodeBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .transform(EncasingRegistry.addVariantTo(DIODE)) .blockstate(BlockStateGen.directionalBlockProvider(false)) @@ -1170,7 +1149,7 @@ public class TFMGBlocks { public static final BlockEntry POTENTIOMETER = REGISTRATE.block("potentiometer", PotentiometerBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) .blockstate(new CreativeMotorGenerator()::generate) @@ -1179,7 +1158,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry ELECTRICAL_SWITCH = REGISTRATE.block("electrical_switch", ElectricSwitchBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .blockstate(BlockStateGen.directionalBlockProvider(true)) .lang("Electric Switch") @@ -1188,14 +1167,14 @@ public class TFMGBlocks { .register(); public static final BlockEntry ENCASED_POTENTIOMETER = REGISTRATE.block("encased_potentiometer", EncasedPotentiometerBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .transform(EncasingRegistry.addVariantTo(POTENTIOMETER)) .blockstate(BlockStateGen.directionalBlockProvider(false)) .register(); public static final BlockEntry ELECTRIC_PUMP = REGISTRATE.block("electric_pump", ElectricPumpBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) .blockstate(BlockStateGen.directionalBlockProvider(true)) @@ -1204,7 +1183,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry VOLTAGE_OBSERVER = REGISTRATE.block("voltage_observer", VoltageObserverBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) .blockstate(new VoltageObserverGenerator()::generate) @@ -1223,7 +1202,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry VOLTMETER = REGISTRATE.block("voltmeter", VoltMeterBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) .blockstate(BlockStateGen.horizontalBlockProvider(true)) @@ -1233,7 +1212,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry POLARIZER = REGISTRATE.block("polarizer", PolarizerBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) .addLayer(() -> RenderType::cutoutMipped) @@ -1243,7 +1222,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry ROTOR = REGISTRATE.block("rotor", RotorBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) .blockstate(BlockStateGen.axisBlockProvider(true)) @@ -1254,7 +1233,7 @@ public class TFMGBlocks { public static final BlockEntry STATOR = REGISTRATE.block("stator", StatorBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .addLayer(() -> RenderType::cutoutMipped) .properties(BlockBehaviour.Properties::noOcclusion) @@ -1264,7 +1243,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry TRAFFIC_LIGHT = REGISTRATE.block("traffic_light", TrafficLightBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) .addLayer(() -> RenderType::cutoutMipped) @@ -1274,7 +1253,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry SEGMENTED_DISPLAY = REGISTRATE.block("segmented_display", SegmentedDisplayBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .onRegister(connectedTextures(SegmentedDisplayCTBehavior::new)) .blockstate(BlockStateGen.horizontalBlockProvider(true)) @@ -1284,7 +1263,7 @@ public class TFMGBlocks { public static final BlockEntry TRANSFORMER = REGISTRATE.block("transformer", TransformerBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .blockstate(BlockStateGen.horizontalBlockProvider(true)) .properties(BlockBehaviour.Properties::noOcclusion) @@ -1295,7 +1274,7 @@ public class TFMGBlocks { public static final BlockEntry CONVERTER = REGISTRATE.block("converter", ConverterBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .transform(pickaxeOnly()) .blockstate(new ConverterGenerator()::generate) .properties(BlockBehaviour.Properties::noOcclusion) @@ -1305,7 +1284,7 @@ public class TFMGBlocks { //public static final BlockEntry FUSE_BLOCK = // REGISTRATE.block("fuse_block", FuseBlock::new) - // .initialProperties(() -> Blocks.IRON_BLOCK) + // .initialProperties(SharedProperties::softMetal) // .transform(pickaxeOnly()) // .properties(BlockBehaviour.Properties::noOcclusion) // .addLayer(() -> RenderType::cutoutMipped) @@ -1326,7 +1305,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry METAL_SMOKESTACK = REGISTRATE.block("metal_smokestack", SmokestackBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.requiresCorrectToolForDrops()) .transform(pickaxeOnly()) .blockstate(new SmokestackGenerator()::generate) @@ -1345,7 +1324,7 @@ public class TFMGBlocks { public static final BlockEntry EXHAUST = REGISTRATE.block("exhaust", ExhaustBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .addLayer(() -> RenderType::cutoutMipped) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .blockstate(BlockStateGen.directionalBlockProvider(false)) @@ -1439,7 +1418,7 @@ public class TFMGBlocks { .register(); //------------------STORAGE_BLOCKS------------------// public static final BlockEntry STEEL_BLOCK = REGISTRATE.block("steel_block", Block::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.requiresCorrectToolForDrops()) .onRegister(connectedTextures(() -> new EncasedCTBehaviour(TFMGSpriteShifts.STEEL_BLOCK))) @@ -1457,7 +1436,7 @@ public class TFMGBlocks { .lang("Block of Steel") .register(); public static final BlockEntry CAST_IRON_BLOCK = REGISTRATE.block("cast_iron_block", Block::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.requiresCorrectToolForDrops()) .onRegister(connectedTextures(() -> new EncasedCTBehaviour(TFMGSpriteShifts.CAST_IRON_BLOCK))) @@ -1474,7 +1453,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry ALUMINUM_BLOCK = REGISTRATE.block("aluminum_block", Block::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.requiresCorrectToolForDrops()) .onRegister(connectedTextures(() -> new EncasedCTBehaviour(TFMGSpriteShifts.CAST_IRON_BLOCK))) @@ -1504,7 +1483,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry LEAD_BLOCK = REGISTRATE.block("lead_block", Block::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.requiresCorrectToolForDrops()) .onRegister(connectedTextures(() -> new EncasedCTBehaviour(TFMGSpriteShifts.LEAD_BLOCK))) .onRegister(casingConnectivity((block, cc) -> cc.makeCasing(block, TFMGSpriteShifts.LEAD_BLOCK))) @@ -1520,7 +1499,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry CONSTANTAN_BLOCK = REGISTRATE.block("constantan_block", Block::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.requiresCorrectToolForDrops()) .transform(pickaxeOnly()) .blockstate(simpleCubeAll("constantan_block")) @@ -1534,7 +1513,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry NICKEL_BLOCK = REGISTRATE.block("nickel_block", Block::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.requiresCorrectToolForDrops()) .onRegister(connectedTextures(() -> new EncasedCTBehaviour(TFMGSpriteShifts.LEAD_BLOCK))) .onRegister(casingConnectivity((block, cc) -> cc.makeCasing(block, TFMGSpriteShifts.LEAD_BLOCK))) @@ -1549,7 +1528,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry LITHIUM_BLOCK = REGISTRATE.block("lithium_block", LithiumBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.requiresCorrectToolForDrops()) .onRegister(connectedTextures(() -> new EncasedCTBehaviour(TFMGSpriteShifts.LEAD_BLOCK))) .onRegister(casingConnectivity((block, cc) -> cc.makeCasing(block, TFMGSpriteShifts.LEAD_BLOCK))) @@ -1568,7 +1547,7 @@ public class TFMGBlocks { public static final BlockEntry COAL_COKE_BLOCK = REGISTRATE.block("coal_coke_block", Block::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.requiresCorrectToolForDrops()) .transform(pickaxeOnly()) .blockstate(simpleCubeAll("coal_coke_block")) @@ -1582,11 +1561,10 @@ public class TFMGBlocks { .lang("Block of Coal Coke") .register(); - public static final BlockEntry CEMENT = REGISTRATE.block("cement", p->new ColoredFallingBlock(new ColorRGBA(-8356741),p)) + public static final BlockEntry CEMENT = REGISTRATE.block("cement", p -> new ColoredFallingBlock(new ColorRGBA(-8356741), p)) .initialProperties(() -> Blocks.CLAY) .tag(BlockTags.MINEABLE_WITH_SHOVEL) - .item() - .build() + .simpleItem() .register(); //------------------DOOR------------------// @@ -1621,9 +1599,6 @@ public class TFMGBlocks { .register(); - - - static { REGISTRATE.setCreativeTab(TFMGCreativeTabs.TFMG_DECORATION); } @@ -1762,7 +1737,7 @@ public class TFMGBlocks { public static final BlockEntry FACTORY_FLOOR = REGISTRATE.block("factory_floor", Block::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p .strength(3.0F) .requiresCorrectToolForDrops() @@ -1772,7 +1747,7 @@ public class TFMGBlocks { .simpleItem() .register(); - // public static final MaterialSet FACTORY_FLOOR_SET = makeVariants(FACTORY_FLOOR, true); + // public static final MaterialSet FACTORY_FLOOR_SET = makeVariants(FACTORY_FLOOR, true); public static final BlockEntry HARDENED_PLANKS = REGISTRATE.block("hardened_planks", Block::new) @@ -1784,7 +1759,7 @@ public class TFMGBlocks { .simpleItem() .register(); - // public static final MaterialSet HARDENED_PLANKS_SET = makeVariants(HARDENED_PLANKS, true); + // public static final MaterialSet HARDENED_PLANKS_SET = makeVariants(HARDENED_PLANKS, true); public static final BlockEntry STEEL_TRAPDOOR = REGISTRATE.block("steel_trapdoor", TrainTrapdoorBlock::new) @@ -1823,7 +1798,7 @@ public class TFMGBlocks { //------------------CONCRETE------------------// public static final BlockEntry REBAR_BLOCK = REGISTRATE.block("rebar_block", SimpleConcreteloggedBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.noOcclusion()) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .addLayer(() -> RenderType::cutoutMipped) @@ -1833,7 +1808,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry REBAR_FLOOR = REGISTRATE.block("rebar_floor", RebarFloorBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.noOcclusion()) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .addLayer(() -> RenderType::cutoutMipped) @@ -1843,7 +1818,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry REBAR_WALL = REGISTRATE.block("rebar_wall", RebarWallBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.noOcclusion()) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .addLayer(() -> RenderType::cutoutMipped) @@ -1853,7 +1828,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry REBAR_PILE = REGISTRATE.block("rebar_pile", TFMGDirectionalBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .addLayer(() -> RenderType::cutoutMipped) .blockstate(BlockStateGen.directionalBlockProvider(true)) @@ -1862,7 +1837,7 @@ public class TFMGBlocks { .register(); public static final BlockEntry REBAR_STAIRS = REGISTRATE.block("rebar_stairs", p -> new RebarStairsBlock(REBAR_PILE.getDefaultState(), p)) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.noOcclusion()) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .addLayer(() -> RenderType::cutoutMipped) @@ -1873,7 +1848,7 @@ public class TFMGBlocks { public static final BlockEntry REBAR_PILLAR = REGISTRATE.block("rebar_pillar", RebarPillarBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) + .initialProperties(SharedProperties::softMetal) .properties(p -> p.noOcclusion()) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .addLayer(() -> RenderType::cutoutMipped) @@ -1896,8 +1871,7 @@ public class TFMGBlocks { .properties(p -> p.requiresCorrectToolForDrops()) .transform(pickaxeOnly()) .tag(BlockTags.NEEDS_STONE_TOOL) - .item() - .build() + .simpleItem() .register(); public static final MaterialSet ASPHALT_SET = makeVariants(ASPHALT); diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGCableTypes.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGCableTypes.java index 60ebee3b..68b520e2 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGCableTypes.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGCableTypes.java @@ -1,40 +1,28 @@ package com.drmangotea.tfmg.registry; -import com.drmangotea.tfmg.TFMG; -import com.drmangotea.tfmg.TFMGRegistries; import com.drmangotea.tfmg.config.TFMGResistivity; import com.drmangotea.tfmg.content.electricity.connection.cable_type.CableType; import com.drmangotea.tfmg.content.electricity.connection.cable_type.CableTypeEntry; -import com.simibubi.create.api.contraption.ContraptionType; -import com.simibubi.create.api.registry.CreateBuiltInRegistries; -import com.simibubi.create.content.contraptions.Contraption; -import com.tterrag.registrate.util.entry.ItemEntry; -import net.minecraft.core.Holder; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; - -import java.util.function.Supplier; import static com.drmangotea.tfmg.TFMG.REGISTRATE; -import static com.simibubi.create.AllContraptionTypes.BY_LEGACY_NAME; public class TFMGCableTypes { - public static final CableTypeEntry empty = REGISTRATE.cableType("empty", CableType::new) + public static final CableTypeEntry EMPTY = REGISTRATE.cableType("empty", CableType::new) .properties((p) -> p.spool(TFMGItems.COPPER_SPOOL)) .register(); - public static final CableTypeEntry copper = REGISTRATE.cableType("copper", CableType::new) + public static final CableTypeEntry COPPER = REGISTRATE.cableType("copper", CableType::new) .properties((p) -> p.color(0xD8735A).spool(TFMGItems.COPPER_SPOOL)) .transform(TFMGResistivity.setResistivity(0.00188f)) .register(); - public static final CableTypeEntry aluminum = REGISTRATE.cableType("aluminum", CableType::new) + public static final CableTypeEntry ALUMINUM = REGISTRATE.cableType("aluminum", CableType::new) .properties((p) -> p.color(0xEDEFEF).spool(TFMGItems.ALUMINUM_SPOOL)) .transform(TFMGResistivity.setResistivity(0.0027f)) .register(); - public static final CableTypeEntry constantan = REGISTRATE.cableType("constantan", CableType::new) + public static final CableTypeEntry CONSTANTAN = REGISTRATE.cableType("constantan", CableType::new) .properties((p) -> p.color(0xCFC2A8).spool(TFMGItems.CONSTANTAN_SPOOL)) .transform(TFMGResistivity.setResistivity(1f)) .register(); diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGEncasedBlocks.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGEncasedBlocks.java index 7030b453..d1cfb83d 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGEncasedBlocks.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGEncasedBlocks.java @@ -2,9 +2,8 @@ package com.drmangotea.tfmg.registry; import com.drmangotea.tfmg.base.TFMGBuilderTransformers; import com.drmangotea.tfmg.base.TFMGSpriteShifts; -import com.drmangotea.tfmg.content.decoration.encased.TFMGEncasedCogwheelBlock; -import com.drmangotea.tfmg.content.decoration.encased.TFMGEncasedShaftBlock; -import com.simibubi.create.AllBlocks; +import com.drmangotea.tfmg.content.decoration.kinetics.encased.TFMGEncasedCogwheelBlock; +import com.drmangotea.tfmg.content.decoration.kinetics.encased.TFMGEncasedShaftBlock; import com.simibubi.create.content.decoration.encasing.EncasingRegistry; import com.simibubi.create.content.kinetics.simpleRelays.encased.EncasedCogCTBehaviour; import com.simibubi.create.foundation.data.CreateRegistrate; @@ -12,8 +11,8 @@ import com.tterrag.registrate.util.entry.BlockEntry; import net.createmod.catnip.data.Couple; import static com.drmangotea.tfmg.TFMG.REGISTRATE; -import static com.drmangotea.tfmg.content.decoration.encased.TFMGEncasedCogwheelBlock.aluminum; -import static com.drmangotea.tfmg.content.decoration.encased.TFMGEncasedCogwheelBlock.steel; +import static com.drmangotea.tfmg.content.decoration.kinetics.encased.TFMGEncasedCogwheelBlock.aluminum; +import static com.drmangotea.tfmg.content.decoration.kinetics.encased.TFMGEncasedCogwheelBlock.steel; import static com.simibubi.create.foundation.data.TagGen.axeOrPickaxe; public class TFMGEncasedBlocks { diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGEntityTypes.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGEntityTypes.java index 2f394b37..6d3029fe 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGEntityTypes.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGEntityTypes.java @@ -11,10 +11,7 @@ import com.drmangotea.tfmg.content.items.weapons.explosives.pipe_bomb.PipeBomb; import com.drmangotea.tfmg.content.items.weapons.explosives.pipe_bomb.PipeBombRenderer; import com.drmangotea.tfmg.content.items.weapons.explosives.thermite_grenades.ThermiteGrenade; import com.drmangotea.tfmg.content.items.weapons.explosives.thermite_grenades.ThermiteGrenadeRenderer; -import com.drmangotea.tfmg.content.items.weapons.lithium_blade.LithiumSpark; -import com.drmangotea.tfmg.content.items.weapons.lithium_blade.LithiumSparkRenderer; import com.simibubi.create.foundation.data.CreateEntityBuilder; - import com.simibubi.create.foundation.utility.CreateLang; import com.tterrag.registrate.util.entry.EntityEntry; import com.tterrag.registrate.util.nullness.NonNullConsumer; @@ -22,7 +19,6 @@ import com.tterrag.registrate.util.nullness.NonNullFunction; import com.tterrag.registrate.util.nullness.NonNullSupplier; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; -import net.minecraft.client.renderer.entity.ItemEntityRenderer; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; @@ -54,15 +50,16 @@ public class TFMGEntityTypes { register("spark", Spark::new, () -> SparkRenderer::new, MobCategory.MISC, 4, 20, true, true, Spark::build).register(); public static final EntityEntry GREEN_SPARK = - register("green_spark", GreenSpark::new, () -> GreenSparkRenderer::new, - MobCategory.MISC, 4, 20, true, true, GreenSpark::build).register(); + register("green_spark", GreenSpark::new, () -> SparkRenderer::new, + MobCategory.MISC, 4, 20, true, true, Spark::build).register(); + public static final EntityEntry BLUE_SPARK = - register("blue_spark", BlueSpark::new, () -> BlueSparkRenderer::new, - MobCategory.MISC, 4, 20, true, true, BlueSpark::build).register(); + register("blue_spark", BlueSpark::new, () -> SparkRenderer::new, + MobCategory.MISC, 4, 20, true, true, Spark::build).register(); public static final EntityEntry LITHIUM_SPARK = - register("lithium_spark", LithiumSpark::new, () -> LithiumSparkRenderer::new, - MobCategory.MISC, 80, 20, true, true, LithiumSpark::build).register(); + register("lithium_spark", LithiumSpark::new, () -> SparkRenderer::new, + MobCategory.MISC, 4, 20, true, true, Spark::build).register(); private static CreateEntityBuilder register(String name, EntityType.EntityFactory factory, @@ -83,7 +80,7 @@ public class TFMGEntityTypes { .renderer(renderer); } - public static void init(){ + public static void init() { } } diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGItems.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGItems.java index 9b38783a..5c4a96bf 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGItems.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGItems.java @@ -4,7 +4,7 @@ import com.drmangotea.tfmg.TFMG; import com.drmangotea.tfmg.base.TFMGCreativeTabs; import com.drmangotea.tfmg.base.TFMGRegistrate; import com.drmangotea.tfmg.base.TFMGTiers; -import com.drmangotea.tfmg.content.decoration.gearbox.SteelVerticalGearboxItem; +import com.drmangotea.tfmg.content.decoration.kinetics.gearbox.SteelVerticalGearboxItem; import com.drmangotea.tfmg.content.electricity.configuration_wrench.ElectriciansWrenchItem; import com.drmangotea.tfmg.base.debug.DebugCinderBlockItem; import com.drmangotea.tfmg.content.electricity.measurement.MultimeterItem; diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGPaletteStoneTypes.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGPaletteStoneTypes.java index 64e2367e..67146c44 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGPaletteStoneTypes.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGPaletteStoneTypes.java @@ -23,6 +23,8 @@ import static com.drmangotea.tfmg.base.palettes.TFMGPaletteBlockPattern.STANDARD public enum TFMGPaletteStoneTypes { + + BAUXITE(STANDARD_RANGE, r -> r.paletteStoneBlock("bauxite", () -> Blocks.DEEPSLATE, true, true) .properties(p -> p.destroyTime(1.25f)) .register()), @@ -41,8 +43,8 @@ public enum TFMGPaletteStoneTypes { public TFMGPaletteBlockPattern[] variantTypes; public TagKey materialTag; - private TFMGPaletteStoneTypes(TFMGPaletteBlockPattern[] variantTypes, - Function> factory) { + TFMGPaletteStoneTypes(TFMGPaletteBlockPattern[] variantTypes, + Function> factory) { this.factory = factory; this.variantTypes = variantTypes; } diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGSoundEvents.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGSoundEvents.java index 19957657..7e722167 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGSoundEvents.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGSoundEvents.java @@ -3,7 +3,6 @@ package com.drmangotea.tfmg.registry; import com.drmangotea.tfmg.TFMG; import com.google.gson.JsonArray; import com.google.gson.JsonObject; - import net.minecraft.core.Holder; import net.minecraft.core.Vec3i; import net.minecraft.core.registries.Registries; @@ -37,8 +36,6 @@ public class TFMGSoundEvents { public static final Map ALL = new HashMap<>(); public static final SoundEntry - - ENGINE = create("engine") .subtitle("Engine Sounds") .category(SoundSource.BLOCKS) @@ -130,7 +127,8 @@ public class TFMGSoundEvents { } - public record ConfiguredSoundEvent(Supplier event, float volume, float pitch) {} + public record ConfiguredSoundEvent(Supplier event, float volume, float pitch) { + } public static class SoundEntryBuilder { diff --git a/src/main/resources/assets/tfmg/models/block/large_steel_cogwheel.json b/src/main/resources/assets/tfmg/models/block/large_steel_cogwheel.json index 3d7423e9..5c45d513 100644 --- a/src/main/resources/assets/tfmg/models/block/large_steel_cogwheel.json +++ b/src/main/resources/assets/tfmg/models/block/large_steel_cogwheel.json @@ -1,4 +1,5 @@ { + "format_version": "1.21.6", "credit": "Made with Blockbench", "parent": "create:block/large_wheels", "texture_size": [32, 32], @@ -19,8 +20,8 @@ "east": {"uv": [0, 10, 10, 11.5], "texture": "#0"}, "south": {"uv": [0, 10, 10, 11.5], "texture": "#0"}, "west": {"uv": [0, 10, 10, 11.5], "texture": "#0"}, - "up": {"uv": [0, 0, 10, 10], "texture": "#0"}, - "down": {"uv": [0, 0, 10, 10], "texture": "#0"} + "up": {"uv": [0, 0.5, 10, 10.5], "texture": "#0"}, + "down": {"uv": [0, 0.5, 10, 10.5], "texture": "#0"} } }, { @@ -33,8 +34,8 @@ "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, "south": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, - "up": {"uv": [0, 11.5, 15, 13], "texture": "#0"}, - "down": {"uv": [0, 11.5, 15, 13], "texture": "#0"} + "up": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, + "down": {"uv": [0, 13, 15, 14.5], "texture": "#0"} } }, { @@ -47,8 +48,8 @@ "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, "south": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, - "up": {"uv": [0, 11.5, 15, 13], "texture": "#0"}, - "down": {"uv": [0, 11.5, 15, 13], "texture": "#0"} + "up": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, + "down": {"uv": [0, 13, 15, 14.5], "texture": "#0"} } }, { @@ -61,8 +62,8 @@ "east": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, "west": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, - "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#0"} + "up": {"uv": [0, 13, 15, 14.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [0, 13, 15, 14.5], "rotation": 90, "texture": "#0"} } }, { @@ -70,12 +71,12 @@ "from": [-2, 6.6, -2], "to": [18, 9.4, 18], "faces": { - "north": {"uv": [0, 10, 10, 11.5], "texture": "#0"}, - "east": {"uv": [0, 10, 10, 11.5], "texture": "#0"}, - "south": {"uv": [0, 10, 10, 11.5], "texture": "#0"}, - "west": {"uv": [0, 10, 10, 11.5], "texture": "#0"}, - "up": {"uv": [0, 0, 10, 10], "texture": "#0"}, - "down": {"uv": [0, 0, 10, 10], "texture": "#0"} + "north": {"uv": [0, 11, 10, 12.5], "texture": "#0"}, + "east": {"uv": [0, 11, 10, 12.5], "texture": "#0"}, + "south": {"uv": [0, 11, 10, 12.5], "texture": "#0"}, + "west": {"uv": [0, 11, 10, 12.5], "texture": "#0"}, + "up": {"uv": [0, 0.5, 10, 10.5], "texture": "#0"}, + "down": {"uv": [0, 0.5, 10, 10.5], "texture": "#0"} } }, { @@ -83,12 +84,12 @@ "from": [0, 4.975, 0], "to": [16, 11.025, 16], "faces": { - "north": {"uv": [10, 0, 12.5, 8], "rotation": 90, "texture": "#0"}, - "east": {"uv": [10, 0, 12.5, 8], "rotation": 90, "texture": "#0"}, - "south": {"uv": [10, 0, 12.5, 8], "rotation": 90, "texture": "#0"}, - "west": {"uv": [10, 0, 12.5, 8], "rotation": 90, "texture": "#0"}, - "up": {"uv": [1, 1, 9, 9], "texture": "#0"}, - "down": {"uv": [1, 1, 9, 9], "texture": "#0"} + "north": {"uv": [10.5, 0.5, 13.525, 8.5], "rotation": 90, "texture": "#0"}, + "east": {"uv": [10.5, 0.5, 13.525, 8.5], "rotation": 90, "texture": "#0"}, + "south": {"uv": [10.5, 0.5, 13.525, 8.5], "rotation": 90, "texture": "#0"}, + "west": {"uv": [10.5, 0.5, 13.525, 8.5], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 1.5, 9, 9.5], "texture": "#0"}, + "down": {"uv": [1, 1.5, 9, 9.5], "texture": "#0"} } }, { @@ -101,8 +102,8 @@ "east": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, "west": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, - "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#0"} + "up": {"uv": [0, 13, 15, 14.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [0, 13, 15, 14.5], "rotation": 90, "texture": "#0"} } }, { @@ -115,8 +116,8 @@ "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, "south": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, - "up": {"uv": [0, 11.5, 15, 13], "texture": "#0"}, - "down": {"uv": [0, 11.5, 15, 13], "texture": "#0"} + "up": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, + "down": {"uv": [0, 13, 15, 14.5], "texture": "#0"} } }, { @@ -129,8 +130,8 @@ "east": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, "west": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, - "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#0"} + "up": {"uv": [0, 13, 15, 14.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [0, 13, 15, 14.5], "rotation": 90, "texture": "#0"} } }, { @@ -142,8 +143,8 @@ "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, "south": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, - "up": {"uv": [0, 11.5, 15, 13], "texture": "#0"}, - "down": {"uv": [0, 11.5, 15, 13], "texture": "#0"} + "up": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, + "down": {"uv": [0, 13, 15, 14.5], "texture": "#0"} } }, { @@ -155,8 +156,8 @@ "east": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, "west": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, - "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#0"} + "up": {"uv": [0, 13, 15, 14.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [0, 13, 15, 14.5], "rotation": 90, "texture": "#0"} } }, { diff --git a/src/main/resources/assets/tfmg/textures/block/capacitor_side.png b/src/main/resources/assets/tfmg/textures/block/capacitor_side.png deleted file mode 100644 index 533b2834f8d4b53019213c91e12adeb9dbb29bf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF^dn79~PO(bR<=sC&7uw;q!w@6J- Q9iZ6^p00i_>zopr03et}1^@s6 diff --git a/src/main/resources/assets/tfmg/textures/block/capacitor_side_connected.png b/src/main/resources/assets/tfmg/textures/block/capacitor_side_connected.png deleted file mode 100644 index 04e8ce834aa87beebbdb0f43d1852d780ec11d8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|e#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;X0X`wFwkC;gj+Fs{bE9)lZAuZmGfnvAM$vZ<0t{50lUr`y6N|G1s^l#2 zh%9Dc;5!7ujG`J|4M4#PPZ!4!kK@S+B0@%HVL>7XT!S4Ovm+`iE2FYF^kzAFMBcn{ z`u#I(qhrNdcf7#z)^y0$BT=zopr0AJx*hX4Qo diff --git a/src/main/resources/assets/tfmg/textures/block/electric_casing.png b/src/main/resources/assets/tfmg/textures/block/electric_casing.png deleted file mode 100644 index 619e49f3aa0eceee41d10d8bce085ea983e620ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 284 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 diff --git a/src/main/resources/assets/tfmg/textures/block/gasoline_engine.png b/src/main/resources/assets/tfmg/textures/block/gasoline_engine.png deleted file mode 100644 index cd4506a8f65bef1250b9066f5578fa4cb698218e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5089 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 KS*7my`u_k*6Y*C7 diff --git a/src/main/resources/assets/tfmg/textures/block/heavy_machinery_casing.png b/src/main/resources/assets/tfmg/textures/block/heavy_machinery_casing.png index 6f34926b690e36e110677d1685f0e056afc7b015..d823c48e8d728b2ac9baeede3016f630ab92cc85 100644 GIT binary patch literal 496 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFV7SxpjN3mX?Ev}G*_5SXASB&xN7 zBS=TcB+x@cXo*DHf(>R@xD>nj6f%IOCNMDjF_b-(`*_u$pa$d&Pgg&ebxsLQ0DZ=7 AHvj+t delta 195 zcmeys{D*OZW4%OxPl&6gnx3J7xvsXMPheinhoxpzC6c)=kca3Hbn-9ZFF}^90}0#HfGiiOZWEE uV=zo$JG557ypWOUITITzn?OPW6T?d<=^GC7L`;D;GkCiCxvXeYLE)Zw0Cf{hs*wCRaPXF{mGOMuyWx5FK#6>&}Az?A5W3( z?Um7c4I7TkMrVPhRZq}7J%Z8>HeY|id$Up93#IM(dg%#56$R)u17d z4qTS&CGi3kmO~5UEyvGZE5?43|7-I8{B9d*ff-fx`{sPCW^%_%A2i=*)#klz+CCnH zxMjxLt?@zJl6wVVZ`;lNpAgoffTNmKSGZ7L8B0r=WcgLT zWeS`LnC4q#chg9;U0R>}^>o;z1CKOAUHVW+-hh%QMJ!-H3y?Rs9m_l2l5f{qG2#HK zeNsWqY8p0fO`$%Mw(mViR?c#@iI}{(tuU-ak-Hv_;_lyFEy<5eCCxEz3D3A%coBvGnz0gG{@w#?J&Q2z&%k!B|Mq1_OUw+X%J0-e1o~0P$y?zdI3YR%l z@%WropLE?Kiqk5u{6aB!_OV^Iq>d!Lh>Mp0C@H2T#L9d4I$X|BjifN*Zm)&BCqmn} z@7*9~@|&Yk6Deoav$)_p9kViOY}lmP@@uk*KI&m$2TZ@MkyKE1)^fTA!zYf;Tp6X~ z1oLJWVHqBLW(Yp+R&kdR`CWN`VoUtKx4T-(r z0piw&s@JdGd7w2iR7sTO*N7BP#zr?%@glmo9 zYS|Sx&azR8h8W8eafm7?^Nrejyaz^-K0@64u~WXB8EeoAXS!J=$!V*SXtv`X@Mk67 zwXc}HY)C<`m!VPbr|A!reRTw!!X>A|=V(1|*+O2@uwY1~HO&lHi0jGx*@^ z&PTkJyqH-t!54;cM6n?(SJL=KH?EPTIp=;$UV@q6n@TagFdTl5xO0)ywXgdct+;fOdePF(X~f!2mj!=$ zT&5Yx3NAT#UN7?b%~liD(B^3b`rqBTYDhDR6&ycLd?}WFcS(7MvU2jjd)-n-Fcn%d z_zYiLEIsI+@<1Zp)fdvsuuI}2QEm~=Lw(&Vo>?YuVVjZf6?VAtH$?OD^Q_+<`Hw#U DnRD3~ literal 2343 zcmXX|c~nyC7C%a6W=giw2E5v{SKUg%^yQEPYIe0tw> z5Wqbf!u_`2AgpU*@`%xk+C`F5R|D}3+TdimnG35vKRBSy!mcPwyIeE*_xwxp3u()` zT=F*)dtBxpsdgwF2mazr7pK56jQK61MLwaWVSyDs?oa}HbCCbKPR{ywM{hzuKCGr$ zKk`4CWPiV52$yf|;gpmZ$r@VtMZG5{7a*{mk`1?`Sc9Xer%|jS6C}Gua!rVTpgip=)coEBWzS*n_y-R&`(qS^GSZccE)#flb~PkS8U8(o{%1;XO|A)3PnTarTkWZ|KGj(zV_uC!Hi z(;I{Kp$cdErvtPR8s_?68r8AdG7t@)U@Bj{s7+2EU zyr?eFB#K|(5J7zTK1Ci@_hR@F#=ElwepT}*x8}6sqCB+!6p~NG)d&=`Sg-`wXcl>OE6!#Bn{xL+ zC|=X7=j}uG2i*{)HuxEnvm`M$!Z!OVFh=++Y}}>(&cziFMM_83=r~A+wu0=>&a>A( zAp0S|>`a4bT4=1+LwBvJZW1hIMmLl`xff0%8Bk;`nfj@f6l&@s?d-IT_~wZF=EY z@dD8+2Ds~iy!--i;@B(BooS$n^m}jNz44PU!ldO=qbm^4t?tJml4BD*L4J!!M)S)N zK^E@Vk$lbVa@u2?fnHCQj%?D#PgJOL8|clG6m&>I+KTtKTY5LN&rZVj6Px>{BY+go zoO`~i?9kI0FHZd219z(QV#dx6#lHQZF+AB2qwG_`{P)z)*ax)eqEEFR*T}Uw78eon zy*0I1EIYthC&}X7>z08w&D%eX+vJQ1r0SM!ocEseX3~UsP2Jv&!e2<_nE3A%v$spSIs7(^LES`d9YIe%=HLohA@f zz4(H{0W~u{Ue9jysb1-8KYNOsau(x_A6@K3ps3gSDpl=d;A6iYSKBK6vJ#n^4+AtX zx?l3l4ihG)caqnj8T)D+YF^OkV;h;MuL-|ZCm%$z} zJ0`2nNMq7Q=Nc$6ydPz`?CDnp?{|Quc0_mi?X78+(?P`uUR*&KV+U9A&vv`}X~(+3 zV(%DO66xqxH;eaA)rm#EK!{&1Xb07VjnZ>=G7I(LHxU3ds?DW&I=$Mh5TuOG?OfNi z7z^`W;3FvuCZIX$c(7mR9-wX9v0?Q5fT)H(wo#j71uWH}EAK?>?g=k^vsC#&t)>3U z6s%2@6pw9O&f_609i5sul#Znuk8#9m7S$k*@1+VY&7c> zr>qwqnJs1xE0c2$;FT8@wU=90WorCmdM*PJJbbTK-K>OMeG^7x8r^}#ntlO{Jy7>p zSRc4ls!T2tEfKGA@5d0E6udr8b}hXMsm#F#`kNArNL1)$nQn3QCl?MwA5SrX~<6`)&zTvn@5kGtJXei-7~kVP%kFWMyCkvb=y;8p;OwOoNdb zEY1XE8!|F62mt9QAkJ)O0gGn=*&y(#jFI65FaTgQnxzatsR`^1EI^e8M#ct=3m~R~ zY-C*kF=+~r4FXI+bD6*@gDfq8ET}F+0|St()5?{PcKuBK2n=EdPZ!4!3;(5)F0MPG zz~Le}fid>~|LXjx)ptvLe-)e$7Vc+eUAkX^$szQuODLmxZjP=60%H*_AKU zUcjSO{C{@#m9*cEx{jsxueRnT>|fJ*qV8^Y$J^$Wk@}5y>~?l(?l>)59&EgRebAC; zD{KN|fA0N$-d#xI?|c^)gZ1CbP0l+XkKi;~pg delta 441 zcmV;q0Y?6v1;_)C8Gi-<0047(dh`GQ0gp*UK~#8N?NPBxL@^M&Ke4fXSlFDkogktd z=oQKpg5?!gh?OXajg@wSe(K5!1CwF%vgVW%bYXZe$?nW#GI@P_H^=S$!&(53a`}2P zR^G5&T^Bezzeqvnx(s*|4@V>swBI?fuYIan?6HB`&1$Le&41Z|rVui?+2yt{EZ-M(^^ji%0Z8AVF8&Ljc zu>poguF(E&1AOzI1Q^Y@qsrd61x@7X`6XwD#eGPLTksi&K3_TwZ;qlrIyoIh^b~yi zjU}M`&05z$7FDBu*z*Kg)Sl}1B(QM}I}ecZ;b#UQX=;dlpPiP(cbM00000NkvXXu0mjf3Mt8x diff --git a/src/main/resources/assets/tfmg/textures/block/low_grade_fuel_engine.png b/src/main/resources/assets/tfmg/textures/block/low_grade_fuel_engine.png deleted file mode 100644 index 9c6fce063166955cc14fc261c29fe15aeabd97e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1344 zcmV-G1;6@ku!DWfJ@ocChJaR%AjIT-@)CLjy@nn_%d98< zik#u}QB6!VfdKi#`{7en1hO1Z!5h9rRPw7>s#Lk8Vqtl;Yx zPs>VTBqe01u2Oy6$iGfb<{lu|N4E|Fmjxy)jTDS+uAUr`UFC9kF*NyZj zz?gDC4txfziZ-`zw8^*(c{Py-)DFQ-MS(?zqOY}G(rI70+t)<>wDOel5)q)bF$n-^ zl&(`>)yV*tWtkucVsZD6houuh8#>w=lZ*g2tV?~4Wm~{?B0wb7h*O#KtQ(6~y)ywA ziY&_nbNn`;YT(}D^Pqqg!@yc5NVr23+v%I*Cl6M&PbQe-Cl6M&EfYjXn=-*1KY7%m z06IzPbNuAt9-ypGd%t+a|Do=WXZsuVfLx?(Ul|xz3wbr!qz7QMqSBxQbjbvnQ2lcJ zSn#bmC;{BeJ-`Ls;4Zgqz&OQv?R}5`lsioTt4spKA@}81w`RBR+$};K-Q?cy`vO;o z01UqO@KHn1ZQ|{2RIs`vJFI#VfKDGea@@|~lP7=!4kH(B0j0+|Zf8JT)p!3q1kouI z%yBydk{e!hNQXJ~dFzv)qivH3(AwddpeIGjyf&Qyt{rD*XS4J3^M!J8aWOBmFV}g$ zzVP(6R?q%}10zmPPm3`KhRWDQb(g$fUtlEP5P8Xw_fbbT8Ub2Sh^Tph>%Be%0jxIJ zCPq_weU#`U50DpVm8DC4O5U$8SY-}e4A!T3>iPti3zFj}2UazIb7=Dbd7V5p?>AZK z!v?GT>c=O=XiC-J|8S?YX$vCM^FE0uH}B6*zIZwN=l+YT&_?I?5N z6q~C7zXy`-i7o_;690Wt5#ST&b&ePO9$gO8Bp^MhZ~S-2#VK#zxK+e;jm}9xPMp_` z!G^06;35y`6aO7D62tZ10P5a0M-q?|=XGPSVHE;=)qM+ei6U*dk_R*zd!R1?ga5{7 zxMZZ^Qk%QoPz1Ey$0N+T2oT)ZONI+Ph=;*!?+OvHEDT-~@X=`8KlSTCCjxk&p$TYP zS=u-NQ@=5Y0F~L^6@HI40tkJ52vBtBDmi}ZunGZ6!S$a77uW4H0gThj8RFL>VJ8V- zJIT;|BlS9c+P2=-pf3Tr1>6JN6Fw;q5DDoKJM96v=kt2!Js`cn&jCsZn1l!PO@#6c z$S~+K2@mL-3hU)66P}c1FJW5)2pH>S=o;5pj{g7wSwN4UMjHwM00002TfcUhWt_hQSrc9EOQ?gU%=>;n0 zEbxddW?8eR=RL5ULAh?3y^w370~qEv=}#LT=BJwMkF1yemkJ@f8s-z|Y^ zwxvdRrg?g5F>nAmtPE0&tPG4mmKP99L)jpgYA`Z`#hHL?Lq;aBSE7LI%yt&AcovWi z0-wql8D0Q=2&2&~WdKS|U}sjH>LQ-Ev`U;>)U1XdYjX#r$G zbr~8MfMlIku6(rXXX-~Fv&hrMF+}2Wa)Jm8Gb5W~vbcD<@=^x2hgU9K*sx^_6What z?!G?0%}i_)KNNL8`(&iRtid-WBtd|)kdet;LHW*&9gBC0oZ#5TqGcA^pvBh7aMsh? zJ2XMSk5RJ>NO`qui7`ns8@X@U6T`{DC9$A^n_=fu#S>D^y=Or#@pScbS?83{1OU

pGLrFwI zR5(waQ$0@tK@i!5Rd}&2Rm7g zDdzG^R|AuHBnQvX|#Wyl;r!D{h002ovPDHLkV1mTCwJZPt diff --git a/src/main/resources/assets/tfmg/textures/block/steel_block_connected.png b/src/main/resources/assets/tfmg/textures/block/steel_block_connected.png index 0bd5cc81498b57e804a6e20cca8e46534cb590ab..427804acbf4939cfa8e7ea27612ce72408d4b759 100644 GIT binary patch literal 1702 zcmZ8h4>;3#82|muM$K@EV~T{5R?Xk+uAMbgQQFd+DQASCQvR&+XEKF4CX$5PF^6Vd zCjD7|nbahSxJsqs^k`kVn?JD@+wQyS?w;q~=Xrnc=ly&?@B4k<=leXrA8DJ{W9DM# zLJ)-U+dv5fk*jk<1o*xmI<5i%P7Yj8hQ!?q{s4)7%-Vpp5Y$wNo{d0)+<~@t@LV!H6BWd8_t6gXRr(cLRP- z!iJD!2r_QdIc)Ca&jq9<+n2%Kx|hX15RnuO(IVpZuvc#Or7!YW>9TTl{$nKpXe7}L zKbD`LGh_%7B!q>L5Dbt%aO*Evx0Mr&_{8f0>;mgSrXX$u9(P3l6TcH+olWeAp*LXp zf8zfxg}_mf0i+Lc+Wnb-AO1YfNy%@TjdPaTk*Z12{`6S`BE$V>MP zw23{u;%BKse&M|dyA>OGi8ZJ>CmsuqMXvpoFZ_0KLoI1RX>>@-pn`m$zCcGZCG>)e zwJ6W_L*Em$)l_!%j9-=LWRoC>jwe2!EvqTl!E=T|JHvP2VuR9ZW9lUjTW>QSI6Gg# zNvCNesNfD8yv0T57rj8o3Ckkq)K0TwM^xp8-i*Z``p~&&ZRQdgqf30Ns=C)G+V|ZhXXB6S&2P26=qFc zhwYE_DXAgVQ55eoj5y8x?W^jUg_tcW}+RrRP;g;uNyaWP-u!_fq@k>GxiJaJ~5RIDwDIS!Khjv!~Aj_ z?dYdMWyajzaIlZ2g<6<^2X%adv%7K{X}u4Zt27_iqxuZ?pOw4JWy#@-Uhrjc<_?nC zS*^|0RCP_csqCfJ{#fUDaiLh|^(xOUrAqjNIa2}Vt@ohJE{zz%XPg}zRSz-?C-(5i z#Yy}`M>EdX+e3-@by=fV$GlJFWWBmMe4d0lUTX7!NkoERER zQ0z^LZtiDThR+f4m8(@b+3>_ZYuADUAq=dOPoRnj-Ld+OzAGwjQF@nVPo~M0SLYPA zptzNFrc(iX8S_i+(P+e5mG{_~n!8_9xQ63BHZ)r`KBk5$6}!3u)racfk$Q8&J7T|4 z=&}aB(*6QnI#dB$%qvI_a%=SwCZq`#hUx%5x3kj&asPo`OtU;MYdY0CDbQdeq7%f% zT6pA!ZTZ7n9*8yU2_@v&J&j&=RfeLi(Mk{MKMMXe9uG`xn)y^Ci(2s6Us?VRt7ZG1-!)WrEqBxup1KC6A zVq?*W4|2HT9I5d(csd?3%~5lZ6p4GVe3A~5=*qk%Qe&5>U9Z`dDq{$OUyCf!@82%X zeyxTq-aMij%2eJhJ=y`&VTD?_B)8~3`{X3|soU>N3a3o+L~*)6_mlMV-Aoaa!w>xp DQ+(kg delta 3076 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 delta 467 zcmV;^0WAKH1pNb$7zqdl0000V^Z#LyAs~MVa7bBm000ib000ib0l1NC?EnA)l1W5C zR5(wiQ`=6$KoFg7A*mEgNezkhO8f$&Au;^9Z~lQlV7x>zAtF#&D3rGDnKEV}@rjd6 zc6X*{ch1bzxxKk7$UwOY3wfSL2fpuM?;keVr+;R=F0?MwH06DfGmZFy^Q$fs+EIU4 z2JMz}5+8GL7axO9O2*T2Jeu(LZ%@yq)9dw%)5{Cz@!_67YBW5m*IeFb>zvp5ym}Ro zc=x(b?=P<<=Z%-Kc8)>{n?3~_i^6~nq*mbn#chs)W~7b7a+Q%b8k3nOy-3Y@MY+jB zGC(}dGR_Pfa1{zBnh}6a6HVXagob}#6B-Oh9D@&*E?0aZIN&O&G=TJw@>$&BGg6K_ z5ue2n7l2#!ZUZ}g=w6#viBAkM8(SB+uFK}t>s;xYnGNxY!DnOZ1bxsB-O!5~z?bJa z8}{%aJAslZ1DYoApJv}wTa-Cd1lDC9JP_zusQqxO#A)LM8DP3F@SANk^lez002ov JPDHLkV1jRT)*S!< diff --git a/src/main/resources/assets/tfmg/textures/block/steel_casing_cable_hub.png b/src/main/resources/assets/tfmg/textures/block/steel_casing_cable_hub.png index 415d0a66b10792a373d5719f1c6731b9ecf535fc..027106c598e3f24a2dfa563df6f5082be4c27182 100644 GIT binary patch literal 547 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}}0G|+7DLExobuB}4+xWDct_hP}yaJTOMRXKp3{~Zud%7&NRcv(C?G3f6 zo7+q@lx*ys0)iuM6i2;WoEsSzFCrlmr<{2RXcT9GM`SSr1K(i~W;~w1A_XWYQQ{g= z5}cn_Ql40p$`Fv4nOCCc=Nh75s%NNY-hJ)6B~Z<_)CkWsPfsld4j_k>L5h);ff2~^ z0%B<>8{{z!MrN=$6Oe7l$OQIi6p)?S&H@(C0jH>LQ-Ev`U;>)M1XdYjX#r$Gbr~8MfMiwO=k+c&*?JVnZ1;3=4ABS< z?GNNTs=&drF>G4xrTH4UmGLK~15dRoG8q_qsd?F7%SvOr zsCAq{=}}bV5ktlTH+wgFmZz4>s_%5zRaGwkD%vjWSn-#WpV_}yv!6VAeX~Bud7iF*F6*2UngDOJ Bi75a8 delta 340 zcmV-a0jvI_1mpsc8Gi-<001BJ|6u?C0V_#FK~#8NrIXD{!$1^;^AH6$LNQb=qI6S=LaANo!j*yxab=&OtI{{~XP5+MmBq>Y+rjGlydW_~K{?=+7V@rk)VS*hdf!+=SxbPsamA zb?=ss>jv0U4kH}630@?i<3srQ+PL52hk-eJvLpex4FMgKWQb4CFMiG_3sC`rAS5B8 zx#|)XkiVD(#Z4K#Kv+aoJyt~304u(Tv1@E!Te}bZHL8(FLY)NFBJ>=t$@Pt-R#p#$ mf7hP83#@%BcYaJ=pYtDV3)6vxZGX)G0000VkOW8q33qRhUC-&C`<*l2%x~s5Gk3oE za}`@0Q8B2M-Bo&jle{E z9E0G!f&RfhmewR&JBOU>1ti=jyX{Htj-S)04xYR0sBZh2ai^)a1TxXen-Q3imy?!} zDJ&`d1aF0;+8Oeb5M`be6mS&&;{hfh$Q+3pCw>)v0RT2X)eHEkJ%f)p@ku^mNk~j|BpcpFEr76yOtVv&V_*3<+ zeMe0Bhe|gPTYpeUUDO&g$ip46*0ZS2&ibg=y?Yb?)WpgGU_*$X_rYLxRQ+Gai!$s@ zuhts{yX>25hF{DX4=~Q!e~~dQPWEbja2GeRyT=SGViUZQ#(Y&bA82_Q)SkXY`L#ul z9;`5kL{d;2I!{m4uoC>0%ahrTf0~&+F=cEai^==P6*BAMiP9u%lckQ`@Fd5Sh-Mu4 zg;^^3&Vuz8;aBr-{5o;#@JV7Re`7D|rxfzgXJi{@)aLWhtH-|!_gxqXqq_<)X&IO{ zvnb)kGRfOxYdD6Pezm9#xA$wh-BF8|-7zg=EbxVS0kbGp?g=Um+11&wkV+csp+VRD z$zszK$DtbFSy;7OZ)cA15vP0e*v2u8QAc`{Jhe`q+FYjW>y}~k8Lzb1t2YOW2X6=g z^`Bi#uIC}GneE!RziAVd_t_N%+o9AiGR>NjshP+4dj9D{kc?G#kb7OwpC)_EI|jBO zO@2u+mp_~^tTEZr82jvDoSyf5?oQzqaSUs0rNYD7uI*-RU&5P9YTYtt6h(nViWa4- zJjF90o4TD+*ecVE6mb)#V*JZG;mSvVEPVN$DqU$i*R|u0n1Uu(Kro6n-R!Brq1cNI z2v_o`(NQ36Hmh#4*G46dOjmg-LQzA*CJ@g5&A$tMR|B4qw9vDZ^bMgMlUML5M^uY% zbkMW2%t=AyHo?|te{B>+kBf`fpfvs`;Thi9VyX3tC2!(6yTmLey1oJyX{e%bL8mdb zH&p%t&i{cO!Cj`+;^8{Qk)e7fySRTG?s|W8ndWkh>A9~}wQ^Oo9null-&VjoCe^wv z?n-xJ$L+o7DNR|3E5$ukFnP`^FPSH)PCU1IXXe!O;mt&ezSUo5c%+n7I~S#GmYEOq zeRiUk=`bOCELTaZEA-8jyAv~|ShiD`+T$aKan#pf=hhLqXD^sLjYOG7UTIQJ6bZ0RL4Um7LXSp=5O2=Q~% zIs6Gv*?y=aA=XwB_H!#Fi?ihuetdj@0yh^I0_RGx#L*rGec&6lYP1q<^}f|4xN5NF zXF|0AA8iZtYzSX6sMVO(nDZ~?5?8=sZdRCa^)lQglo?j8(iBrG;C)!Yk#T_)okgg2 zEP7Y@u*|JtLS^9ya<(X2%gT7S;D=!=P3;VNojBoKyKL70iUDSYl-mxz$EH61|{`sxoq3hMypj$gMA>svWl=)p;NKzr+F#`5m)yCyQAo zWJYugel>~*4?%=&x+b9`YDC9hMkgy_g!MXrPwgqKN^}h ztTJ}jrTUTSYPacj?l`s*UCwjU>8|O3<>Xgl*%0=BaB;K}gI~S8NB@cuYkGDNSt(1c zdL6mt<&x}vxUqZDYypqi!vJWODVGl*0i+sJtY78p`L*~!7Vd83!>`G`D;mNQvOuvR zxmR?492plaQGt%V5ygZ`MF@N?3&Z-pe>Mt5cD5XKBU<2poYMjS@4ZRW#A3>wXoOAb pC_uad%`5u@bsW#W2<`z(*dSMX_=w*gYa9LF#?L3fyUL4|{vW6Ox*Pxi delta 3964 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 LbAuW^WaR$ZcoTM-GF+4JW2PM*>=VX~^a zmXw?lP=`cD%{L&$UlQaO{2v7{T)8u2AyA65z$3Dlfr0NZ2s0kfUy%aRR^l2_5}cn_ zQl40p$`Fv4nOCCc=Nh75s%NNY-hJ)6B~Z<_)CkWsPfsld4j_k>L5h);ff2~^0%B<> z8{|U`MrN=$6Oe7l$iyH3q@#d1vz-Mjo&{usKmrhh^uuU0OBsM+G=ZIg1*pQn$k>2! z0mM|04%P(_lcoUKAixAPhY74Q$kGDHg6c9fFaXJ_y3gxfY_jzzkh#Ot#WBRffA6H* zLWdPNTpS~o`X2gUpXaV-XdWDIbyu9RpWABEdL^Z#v~{n;x_{|fwA!;)td~9XpXsn- zJ%f#HsZeOhO0Q4TwhD0y9G}7X@x&q3KMa!AGQYo;Fa+Iq3}@tAY2IAKXE@2@x}tc} zvPoZWRElS+87ZIIk+*ZX2*d1|g~wKBGQ0RO+*>{Cx(RR83bqe6Di8cJuJ74?Vkc8a yx3-nDQM}#p(68w=tX`4~pKTbXr83OeS0<76@11EyUF8}}l07*qoM6N<$ Ef);*@(f|Me diff --git a/src/main/resources/assets/tfmg/textures/entity/spark.png b/src/main/resources/assets/tfmg/textures/entity/spark.png new file mode 100644 index 0000000000000000000000000000000000000000..9f94e42c308a99918bbef150457f6242a188679e GIT binary patch literal 412 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1enP@=>&q9iy!t)x7$D3u`~F*C13&(AeP!Bo#s z&%FEEcT1p}ZK)BSX`Y^1VEb4Zq!?Kl7=glGKr9VqgIuG*$P5-|0b$b#xJG%x_kI;~v!XxGowk3gokr;B5VM)1-z8+i{naIhS#JsvJPHQ?rSr_c@o z>qBM#q~~7Xu*f}oqx$|Nh80?OY8hjgRT9$}O1{srH<&5;xzqlHk5W^If^mGoJ?2{( VVoU;3|D!=xc)I$ztaD0e0s!kLTZ#Yx literal 0 HcmV?d00001 diff --git a/src/main/resources/tfmg.mixins.json b/src/main/resources/tfmg.mixins.json index ce1dd032..5123472a 100644 --- a/src/main/resources/tfmg.mixins.json +++ b/src/main/resources/tfmg.mixins.json @@ -13,8 +13,10 @@ "PipeAttachmentModelMixin", "RecipeProviderMixin", "accessor.FluidTankBlockEntityAccessor", + "accessor.FlywheelBlockEntityMixin", "accessor.ProcessingRecipeAccessor", "accessor.SequencedAssemblyRecipeAccessor", + "accessor.SlidingDoorBlockEntityAccessor", "accessor.TankSegmentAccessor" ], "client": [