51 left YIPEE

This commit is contained in:
DaCodia
2024-08-06 23:57:00 -05:00
parent f6031652c2
commit f957e697d9
39 changed files with 147 additions and 367 deletions

View File

@@ -3,18 +3,17 @@ package com.drmangotea.createindustry.base;
import com.tterrag.registrate.AbstractRegistrate; import com.tterrag.registrate.AbstractRegistrate;
import com.tterrag.registrate.builders.BuilderCallback; import com.tterrag.registrate.builders.BuilderCallback;
import com.tterrag.registrate.builders.FluidBuilder; import com.tterrag.registrate.builders.FluidBuilder;
import com.tterrag.registrate.fabric.SimpleFlowableFluid;
import com.tterrag.registrate.util.nullness.NonNullFunction; import com.tterrag.registrate.util.nullness.NonNullFunction;
import com.tterrag.registrate.util.nullness.NonNullSupplier; import com.tterrag.registrate.util.nullness.NonNullSupplier;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.fluids.ForgeFlowingFluid;
import net.minecraftforge.fluids.ForgeFlowingFluid.Properties;
public class GasFluidBuilder<T extends ForgeFlowingFluid, P> extends FluidBuilder<T, P> { public class GasFluidBuilder<T extends SimpleFlowableFluid, P> extends FluidBuilder<T, P> {
public GasFluidBuilder(AbstractRegistrate<?> owner, P parent, String name, BuilderCallback callback, public GasFluidBuilder(AbstractRegistrate<?> owner, P parent, String name, BuilderCallback callback,
ResourceLocation stillTexture, ResourceLocation flowingTexture, FluidBuilder.FluidTypeFactory typeFactory, ResourceLocation stillTexture, ResourceLocation flowingTexture,
NonNullFunction<Properties, T> factory) { NonNullFunction<SimpleFlowableFluid.Properties, T> factory) {
super(owner, parent, name, callback, stillTexture, flowingTexture, typeFactory, factory); super(owner, parent, name, callback, stillTexture, flowingTexture, factory);
source(factory); source(factory);
} }
@@ -23,6 +22,4 @@ public class GasFluidBuilder<T extends ForgeFlowingFluid, P> extends FluidBuilde
return this::getEntry; return this::getEntry;
} }
} }

View File

@@ -3,17 +3,18 @@ package com.drmangotea.createindustry.base.creative_mode_tabs;
import java.util.Collection; import java.util.Collection;
import com.drmangotea.createindustry.CreateTFMG; import com.drmangotea.createindustry.CreateTFMG;
import com.simibubi.create.compat.jei.CreateJEI;
import com.tterrag.registrate.util.entry.RegistryEntry; import com.tterrag.registrate.util.entry.RegistryEntry;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.client.resources.model.BakedModel; import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.core.NonNullList; import net.minecraft.core.NonNullList;
import net.minecraft.core.Registry;
import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraftforge.registries.ForgeRegistries;
public abstract class TFMGCreativeModeTab extends CreativeModeTab { public abstract class TFMGCreativeModeTab extends CreativeModeTab {
public TFMGCreativeModeTab(String id) { public TFMGCreativeModeTab(String id) {
@@ -28,7 +29,7 @@ public abstract class TFMGCreativeModeTab extends CreativeModeTab {
} }
protected Collection<RegistryEntry<Item>> registeredItems() { protected Collection<RegistryEntry<Item>> registeredItems() {
return CreateTFMG.REGISTRATE.getAll(ForgeRegistries.ITEMS.getRegistryKey()); return CreateTFMG.REGISTRATE.getAll(Registry.ITEM.key());
} }
public void addBlocks(NonNullList<ItemStack> items) { public void addBlocks(NonNullList<ItemStack> items) {

View File

@@ -10,6 +10,8 @@ import com.tterrag.registrate.providers.RegistrateRecipeProvider;
import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullBiConsumer;
import com.tterrag.registrate.util.nullness.NonNullFunction; import com.tterrag.registrate.util.nullness.NonNullFunction;
import com.tterrag.registrate.util.nullness.NonNullSupplier; import com.tterrag.registrate.util.nullness.NonNullSupplier;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@@ -18,8 +20,6 @@ import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.model.generators.ConfiguredModel; import net.minecraftforge.client.model.generators.ConfiguredModel;
import java.util.Optional; import java.util.Optional;
@@ -74,7 +74,7 @@ public class TFMGPaletteBlockPattern {
private NonNullFunction<NonNullSupplier<Block>, NonNullBiConsumer<DataGenContext<Block, ? extends Block>, RegistrateRecipeProvider>> additionalRecipes; private NonNullFunction<NonNullSupplier<Block>, NonNullBiConsumer<DataGenContext<Block, ? extends Block>, RegistrateRecipeProvider>> additionalRecipes;
private TFMGPaletteBlockPartial<? extends Block>[] partials; private TFMGPaletteBlockPartial<? extends Block>[] partials;
@OnlyIn(Dist.CLIENT) @Environment(EnvType.CLIENT)
private RenderType renderType; private RenderType renderType;
private static TFMGPaletteBlockPattern create(String name, TFMGPaletteBlockPattern.PatternNameType nameType, private static TFMGPaletteBlockPattern create(String name, TFMGPaletteBlockPattern.PatternNameType nameType,

View File

@@ -6,6 +6,8 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Matrix3f; import com.mojang.math.Matrix3f;
import com.mojang.math.Matrix4f; import com.mojang.math.Matrix4f;
import com.mojang.math.Vector3f; import com.mojang.math.Vector3f;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRenderer;
@@ -13,10 +15,8 @@ import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT) @Environment(EnvType.CLIENT)
public class BlueSparkRenderer extends EntityRenderer<BlueSpark> { public class BlueSparkRenderer extends EntityRenderer<BlueSpark> {
private static final ResourceLocation TEXTURE_LOCATION = CreateTFMG.asResource("textures/entity/blue_spark.png"); private static final ResourceLocation TEXTURE_LOCATION = CreateTFMG.asResource("textures/entity/blue_spark.png");
private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION); private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION);

View File

@@ -6,6 +6,8 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Matrix3f; import com.mojang.math.Matrix3f;
import com.mojang.math.Matrix4f; import com.mojang.math.Matrix4f;
import com.mojang.math.Vector3f; import com.mojang.math.Vector3f;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRenderer;
@@ -13,10 +15,8 @@ import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT) @Environment(EnvType.CLIENT)
public class GreenSparkRenderer extends EntityRenderer<GreenSpark> { public class GreenSparkRenderer extends EntityRenderer<GreenSpark> {
private static final ResourceLocation TEXTURE_LOCATION = CreateTFMG.asResource("textures/entity/green_spark.png"); private static final ResourceLocation TEXTURE_LOCATION = CreateTFMG.asResource("textures/entity/green_spark.png");
private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION); private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION);

View File

@@ -5,6 +5,8 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Matrix3f; import com.mojang.math.Matrix3f;
import com.mojang.math.Matrix4f; import com.mojang.math.Matrix4f;
import com.mojang.math.Vector3f; import com.mojang.math.Vector3f;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRenderer;
@@ -12,10 +14,8 @@ import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT) @Environment(EnvType.CLIENT)
public class SparkRenderer extends EntityRenderer<Spark> { public class SparkRenderer extends EntityRenderer<Spark> {
private static final ResourceLocation TEXTURE_LOCATION = new ResourceLocation("textures/particle/lava.png"); private static final ResourceLocation TEXTURE_LOCATION = new ResourceLocation("textures/particle/lava.png");
private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION); private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION);

View File

@@ -0,0 +1,33 @@
package com.drmangotea.createindustry.blocks.electricity.api;
import net.fabricmc.fabric.api.transfer.v1.storage.TransferVariant;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.FriendlyByteBuf;
import org.jetbrains.annotations.Nullable;
public class Energy implements TransferVariant<Double> {
@Override
public boolean isBlank() {
return false;
}
@Override
public Double getObject() {
return null;
}
@Override
public @Nullable CompoundTag getNbt() {
return null;
}
@Override
public CompoundTag toNbt() {
return null;
}
@Override
public void toPacket(FriendlyByteBuf buf) {
}
}

View File

@@ -0,0 +1,24 @@
package com.drmangotea.createindustry.blocks.electricity.api;
import net.fabricmc.fabric.api.transfer.v1.storage.base.SingleVariantStorage;
import org.jetbrains.annotations.ApiStatus;
@ApiStatus.Experimental
public class EnergyStorage extends SingleVariantStorage<Energy> {
public EnergyStorage(long i) {
this.variant = new Energy();
this.amount = i;
}
@Override
protected Energy getBlankVariant() {
return null;
}
@Override
protected long getCapacity(Energy variant) {
return 0;
}
}

View File

@@ -1,6 +1,7 @@
package com.drmangotea.createindustry.blocks.electricity.base.cables; package com.drmangotea.createindustry.blocks.electricity.base.cables;
import com.drmangotea.createindustry.base.TFMGTools; import com.drmangotea.createindustry.base.TFMGTools;
import com.drmangotea.createindustry.blocks.electricity.api.EnergyStorage;
import com.drmangotea.createindustry.blocks.electricity.base.*; import com.drmangotea.createindustry.blocks.electricity.base.*;
import com.drmangotea.createindustry.blocks.electricity.resistors.ResistorBlockEntity; import com.drmangotea.createindustry.blocks.electricity.resistors.ResistorBlockEntity;
import com.drmangotea.createindustry.registry.TFMGItems; import com.drmangotea.createindustry.registry.TFMGItems;
@@ -217,8 +218,7 @@ public class CableConnectorBlockEntity extends ElectricBlockEntity {
}else } else if(be1!=null) {
if(be1!=null) {
if (be1.getCapability(ForgeCapabilities.ENERGY, direction.getOpposite()).isPresent()) { if (be1.getCapability(ForgeCapabilities.ENERGY, direction.getOpposite()).isPresent()) {

View File

@@ -415,7 +415,7 @@ public class DieselEngineBlockEntity extends SmartBlockEntity implements IHaveGo
@Nullable @Nullable
@OnlyIn(Dist.CLIENT) @Environment(EnvType.CLIENT)
public Float getTargetAngle() { public Float getTargetAngle() {
float angle = 0; float angle = 0;
BlockState blockState = getBlockState(); BlockState blockState = getBlockState();

View File

@@ -55,9 +55,7 @@ public class SteelFluidTankRenderer extends SafeBlockEntityRenderer<SteelTankBlo
if (fluidStack.isEmpty()) if (fluidStack.isEmpty())
return; return;
boolean top = fluidStack.getFluid() boolean top = fluidStack.getType().getFluid().defaultFluidState().is;
.getFluidType()
.isLighterThanAir();
float xMin = tankHullWidth; float xMin = tankHullWidth;
float xMax = xMin + te.width - 2 * tankHullWidth; float xMax = xMin + te.width - 2 * tankHullWidth;

View File

@@ -17,6 +17,8 @@ import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
import io.github.fabricators_of_create.porting_lib.util.FluidStack; import io.github.fabricators_of_create.porting_lib.util.FluidStack;
import io.github.fabricators_of_create.porting_lib.util.LazyOptional; import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
import net.fabricmc.fabric.api.transfer.v1.transaction.Transaction;
import net.fabricmc.fabric.api.transfer.v1.transaction.TransactionContext;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
@@ -150,8 +152,7 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
if (!hasLevel()) if (!hasLevel())
return; return;
FluidVariant attributes = newFluidStack.getFluid() FluidVariant attributes = newFluidStack.getType();
.getFluidType();
int luminosity = (int) (attributes.getLightLevel(newFluidStack) / 1.2f); int luminosity = (int) (attributes.getLightLevel(newFluidStack) / 1.2f);
boolean reversed = attributes.isLighterThanAir(); boolean reversed = attributes.isLighterThanAir();
int maxY = (int) ((getFillState() * height) + 1); int maxY = (int) ((getFillState() * height) + 1);
@@ -212,7 +213,7 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
tankInventory.setCapacity(blocks * getCapacityMultiplier()); tankInventory.setCapacity(blocks * getCapacityMultiplier());
long overflow = tankInventory.getFluidAmount() - tankInventory.getCapacity(); long overflow = tankInventory.getFluidAmount() - tankInventory.getCapacity();
if (overflow > 0) if (overflow > 0)
tankInventory.drain(overflow, FluidAction.EXECUTE); tankInventory.extract(tankInventory.variant, overflow, Transaction.openOuter());
forceFluidLevelUpdate = true; forceFluidLevelUpdate = true;
} }

View File

@@ -121,10 +121,10 @@ public class SteelTankItem extends BlockItem {
if (SteelTankBlock.isTank(blockState)) if (SteelTankBlock.isTank(blockState))
continue; continue;
BlockPlaceContext context = BlockPlaceContext.at(ctx, offsetPos, face); BlockPlaceContext context = BlockPlaceContext.at(ctx, offsetPos, face);
player.getPersistentData() player.getExtraCustomData()
.putBoolean("SilenceTankSound", true); .putBoolean("SilenceTankSound", true);
super.place(context); super.place(context);
player.getPersistentData() player.getExtraCustomData()
.remove("SilenceTankSound"); .remove("SilenceTankSound");
} }
} }

View File

@@ -1,22 +0,0 @@
package com.drmangotea.createindustry.items;
import net.minecraft.world.item.BucketItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.level.material.Fluid;
import org.jetbrains.annotations.Nullable;
public class BadFuelBucketItem extends BucketItem {
public BadFuelBucketItem(Fluid p_40689_, Properties p_40690_) {
super(p_40689_, p_40690_);
}
public BadFuelBucketItem(java.util.function.Supplier<? extends Fluid> supplier, Item.Properties builder) {
super(supplier,builder);
}
@Override
public int getBurnTime(ItemStack itemStack, @Nullable RecipeType<?> recipeType) {
return 200;
}
}

View File

@@ -1,25 +0,0 @@
package com.drmangotea.createindustry.items;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.level.block.Block;
import org.jetbrains.annotations.Nullable;
public class CoalCokeBlockItem extends BlockItem {
public CoalCokeBlockItem(Block p_40565_, Properties p_40566_) {
super(p_40565_, p_40566_);
}
@Override
public int getBurnTime(ItemStack itemStack, @Nullable RecipeType<?> recipeType) {
return 28800;
}
}

View File

@@ -1,19 +0,0 @@
package com.drmangotea.createindustry.items;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.RecipeType;
import org.jetbrains.annotations.Nullable;
public class CoalCokeItem extends Item {
public CoalCokeItem(Properties p_40566_) {
super( p_40566_);
}
@Override
public int getBurnTime(ItemStack itemStack, @Nullable RecipeType<?> recipeType) {
return ;
}
}

View File

@@ -1,25 +0,0 @@
package com.drmangotea.createindustry.items;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.level.block.Block;
import org.jetbrains.annotations.Nullable;
public class FossilstoneItem extends BlockItem {
public FossilstoneItem(Block p_40565_, Properties p_40566_) {
super(p_40565_, p_40566_);
}
@Override
public int getBurnTime(ItemStack itemStack, @Nullable RecipeType<?> recipeType) {
return 4000;
}
}

View File

@@ -1,21 +0,0 @@
package com.drmangotea.createindustry.items;
import net.minecraft.world.item.BucketItem;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.level.material.Fluid;
import org.jetbrains.annotations.Nullable;
public class OilBucketItem extends BucketItem {
public OilBucketItem(Fluid p_40689_, Properties p_40690_) {
super(p_40689_, p_40690_);
}
public OilBucketItem(java.util.function.Supplier<? extends Fluid> supplier, Properties builder) {
super(supplier,builder);
}
@Override
public int getBurnTime(ItemStack itemStack, @Nullable RecipeType<?> recipeType) {
return 800;
}
}

View File

@@ -4,12 +4,12 @@ import com.drmangotea.createindustry.CreateTFMG;
import com.drmangotea.createindustry.CreateTFMGClient; import com.drmangotea.createindustry.CreateTFMGClient;
import com.simibubi.create.content.equipment.zapper.ShootGadgetPacket; import com.simibubi.create.content.equipment.zapper.ShootGadgetPacket;
import com.simibubi.create.content.equipment.zapper.ShootableGadgetRenderHandler; import com.simibubi.create.content.equipment.zapper.ShootableGadgetRenderHandler;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
public class AdvancedPotatoCannonPacket extends ShootGadgetPacket { public class AdvancedPotatoCannonPacket extends ShootGadgetPacket {
@@ -46,7 +46,7 @@ public class AdvancedPotatoCannonPacket extends ShootGadgetPacket {
@Override @Override
@OnlyIn(Dist.CLIENT) @Environment(EnvType.CLIENT)
protected void handleAdditional() { protected void handleAdditional() {
CreateTFMG.LOGGER.debug("AAAAAAAAAAAAAAAAAAAAAAAAAE"); CreateTFMG.LOGGER.debug("AAAAAAAAAAAAAAAAAAAAAAAAAE");
@@ -54,7 +54,7 @@ public class AdvancedPotatoCannonPacket extends ShootGadgetPacket {
} }
@Override @Override
@OnlyIn(Dist.CLIENT) @Environment(EnvType.CLIENT)
protected ShootableGadgetRenderHandler getHandler() { protected ShootableGadgetRenderHandler getHandler() {
return CreateTFMGClient.ADVANCED_POTATO_CANNON_RENDER_HANDLER; return CreateTFMGClient.ADVANCED_POTATO_CANNON_RENDER_HANDLER;
} }

View File

@@ -4,6 +4,8 @@ package com.drmangotea.createindustry.items.weapons.advanced_potato_cannon.proje
import com.drmangotea.createindustry.registry.TFMGItems; import com.drmangotea.createindustry.registry.TFMGItems;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Vector3f;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.block.model.ItemTransforms;
import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRenderer;
@@ -12,10 +14,8 @@ import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlas;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT) @Environment(EnvType.CLIENT)
public class NapalmPotatoRenderer extends EntityRenderer<NapalmPotato> { public class NapalmPotatoRenderer extends EntityRenderer<NapalmPotato> {
private final ItemRenderer itemRenderer; private final ItemRenderer itemRenderer;

View File

@@ -3,6 +3,8 @@ package com.drmangotea.createindustry.items.weapons.explosives.napalm;
import com.drmangotea.createindustry.registry.TFMGBlocks; import com.drmangotea.createindustry.registry.TFMGBlocks;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Vector3f;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.block.BlockRenderDispatcher; import net.minecraft.client.renderer.block.BlockRenderDispatcher;
import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRenderer;
@@ -11,10 +13,8 @@ import net.minecraft.client.renderer.entity.TntMinecartRenderer;
import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlas;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT) @Environment(EnvType.CLIENT)
public class NapalmBombRenderer extends EntityRenderer<NapalmBombEntity> { public class NapalmBombRenderer extends EntityRenderer<NapalmBombEntity> {
private final BlockRenderDispatcher blockRenderer; private final BlockRenderDispatcher blockRenderer;
public NapalmBombRenderer(EntityRendererProvider.Context p_174426_) { public NapalmBombRenderer(EntityRendererProvider.Context p_174426_) {

View File

@@ -4,6 +4,8 @@ package com.drmangotea.createindustry.items.weapons.explosives.pipe_bomb;
import com.drmangotea.createindustry.registry.TFMGItems; import com.drmangotea.createindustry.registry.TFMGItems;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Vector3f;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.block.model.ItemTransforms;
import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRenderer;
@@ -12,10 +14,8 @@ import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlas;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT) @Environment(EnvType.CLIENT)
public class PipeBombRenderer extends EntityRenderer<PipeBomb> { public class PipeBombRenderer extends EntityRenderer<PipeBomb> {
private final ItemRenderer itemRenderer; private final ItemRenderer itemRenderer;

View File

@@ -4,6 +4,8 @@ package com.drmangotea.createindustry.items.weapons.explosives.thermite_grenades
import com.drmangotea.createindustry.registry.TFMGItems; import com.drmangotea.createindustry.registry.TFMGItems;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Vector3f;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.block.model.ItemTransforms;
import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRenderer;
@@ -12,10 +14,8 @@ import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlas;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT) @Environment(EnvType.CLIENT)
public class ThermiteGrenadeRenderer extends EntityRenderer<ThermiteGrenade> { public class ThermiteGrenadeRenderer extends EntityRenderer<ThermiteGrenade> {
private final ItemRenderer itemRenderer; private final ItemRenderer itemRenderer;
private ChemicalColor chemicalColor; private ChemicalColor chemicalColor;

View File

@@ -32,9 +32,8 @@ public class BlueFireBlock extends BaseFireBlock {
public static final BooleanProperty SOUTH = PipeBlock.SOUTH; public static final BooleanProperty SOUTH = PipeBlock.SOUTH;
public static final BooleanProperty WEST = PipeBlock.WEST; public static final BooleanProperty WEST = PipeBlock.WEST;
public static final BooleanProperty UP = PipeBlock.UP; public static final BooleanProperty UP = PipeBlock.UP;
private static final Map<Direction, BooleanProperty> PROPERTY_BY_DIRECTION = PipeBlock.PROPERTY_BY_DIRECTION.entrySet().stream().filter((p_53467_) -> { private static final Map<Direction, BooleanProperty> PROPERTY_BY_DIRECTION =
return p_53467_.getKey() != Direction.DOWN; PipeBlock.PROPERTY_BY_DIRECTION.entrySet().stream().filter((p_53467_) -> p_53467_.getKey() != Direction.DOWN).collect(Util.toMap());
}).collect(Util.toMap());
private static final VoxelShape UP_AABB = Block.box(0.0D, 15.0D, 0.0D, 16.0D, 16.0D, 16.0D); private static final VoxelShape UP_AABB = Block.box(0.0D, 15.0D, 0.0D, 16.0D, 16.0D, 16.0D);
private static final VoxelShape WEST_AABB = Block.box(0.0D, 0.0D, 0.0D, 1.0D, 16.0D, 16.0D); private static final VoxelShape WEST_AABB = Block.box(0.0D, 0.0D, 0.0D, 1.0D, 16.0D, 16.0D);
private static final VoxelShape EAST_AABB = Block.box(15.0D, 0.0D, 0.0D, 16.0D, 16.0D, 16.0D); private static final VoxelShape EAST_AABB = Block.box(15.0D, 0.0D, 0.0D, 16.0D, 16.0D, 16.0D);

View File

@@ -37,9 +37,8 @@ public class GreenFireBlock extends BaseFireBlock {
public static final BooleanProperty SOUTH = PipeBlock.SOUTH; public static final BooleanProperty SOUTH = PipeBlock.SOUTH;
public static final BooleanProperty WEST = PipeBlock.WEST; public static final BooleanProperty WEST = PipeBlock.WEST;
public static final BooleanProperty UP = PipeBlock.UP; public static final BooleanProperty UP = PipeBlock.UP;
private static final Map<Direction, BooleanProperty> PROPERTY_BY_DIRECTION = PipeBlock.PROPERTY_BY_DIRECTION.entrySet().stream().filter((p_53467_) -> { private static final Map<Direction, BooleanProperty> PROPERTY_BY_DIRECTION =
return p_53467_.getKey() != Direction.DOWN; PipeBlock.PROPERTY_BY_DIRECTION.entrySet().stream().filter((p_53467_) -> p_53467_.getKey() != Direction.DOWN).collect(Util.toMap());
}).collect(Util.toMap());
private static final VoxelShape UP_AABB = Block.box(0.0D, 15.0D, 0.0D, 16.0D, 16.0D, 16.0D); private static final VoxelShape UP_AABB = Block.box(0.0D, 15.0D, 0.0D, 16.0D, 16.0D, 16.0D);
private static final VoxelShape WEST_AABB = Block.box(0.0D, 0.0D, 0.0D, 1.0D, 16.0D, 16.0D); private static final VoxelShape WEST_AABB = Block.box(0.0D, 0.0D, 0.0D, 1.0D, 16.0D, 16.0D);
private static final VoxelShape EAST_AABB = Block.box(15.0D, 0.0D, 0.0D, 16.0D, 16.0D, 16.0D); private static final VoxelShape EAST_AABB = Block.box(15.0D, 0.0D, 0.0D, 16.0D, 16.0D, 16.0D);

View File

@@ -143,18 +143,18 @@ return Math.round( 13* ((float)((float)stack.getOrCreateTag().getInt("amount")/(
for(FlamethrowerFuel fuel : FlamethrowerFuel.values()) { for(FlamethrowerFuel fuel : FlamethrowerFuel.values()) {
String fluid = be.getFluid(0).getFluid().getFluidType().toString().replaceFirst("createindustry:",""); String fluid = be.getFluid(0).getType().toString().replaceFirst("createindustry:","");
if (fluid.equals(fuel.name().toLowerCase())) { if (fluid.equals(fuel.name().toLowerCase())) {
if(nbt.getString("fuel").equals(fluid)||nbt.getInt("amount")==0) { if(nbt.getString("fuel").equals(fluid)||nbt.getInt("amount")==0) {
int toDrain = Math.min(FUEL_CAPACITY - nbt.getInt("amount"), be.getFluid(0).getAmount()); long toDrain = Math.min(FUEL_CAPACITY - nbt.getInt("amount"), be.getFluid(0).getAmount());
nbt.putString("fuel", fluid); nbt.putString("fuel", fluid);
be.getTankInventory().drain(toDrain, IFluidHandler.FluidAction.EXECUTE); be.getTankInventory().drain(toDrain, IFluidHandler.FluidAction.EXECUTE);
nbt.putInt("amount", nbt.getInt("amount") + toDrain); nbt.putLong("amount", nbt.getLong("amount") + toDrain);
context.getPlayer().getCooldowns().addCooldown(stack.getItem(), 20); context.getPlayer().getCooldowns().addCooldown(stack.getItem(), 20);

View File

@@ -3,11 +3,11 @@ package com.drmangotea.createindustry.items.weapons.flamethrover;
import com.drmangotea.createindustry.CreateTFMGClient; import com.drmangotea.createindustry.CreateTFMGClient;
import com.simibubi.create.content.equipment.zapper.ShootGadgetPacket; import com.simibubi.create.content.equipment.zapper.ShootGadgetPacket;
import com.simibubi.create.content.equipment.zapper.ShootableGadgetRenderHandler; import com.simibubi.create.content.equipment.zapper.ShootableGadgetRenderHandler;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
public class FlamethrowerPacket extends ShootGadgetPacket { public class FlamethrowerPacket extends ShootGadgetPacket {
@@ -31,13 +31,13 @@ public class FlamethrowerPacket extends ShootGadgetPacket {
@Override @Override
@OnlyIn(Dist.CLIENT) @Environment(EnvType.CLIENT)
protected void handleAdditional() { protected void handleAdditional() {
} }
@Override @Override
@OnlyIn(Dist.CLIENT) @Environment(EnvType.CLIENT)
protected ShootableGadgetRenderHandler getHandler() { protected ShootableGadgetRenderHandler getHandler() {
return CreateTFMGClient.FLAMETHROWER_RENDER_HANDLER; return CreateTFMGClient.FLAMETHROWER_RENDER_HANDLER;
} }

View File

@@ -11,6 +11,7 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.SwordItem; import net.minecraft.world.item.SwordItem;
import net.minecraft.world.item.Tier; import net.minecraft.world.item.Tier;
import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.Enchantment;
import net.minecraft.world.item.enchantment.EnchantmentHelper;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import java.util.Map; import java.util.Map;
@@ -29,10 +30,10 @@ public class LithiumBladeItem extends SwordItem {
ItemStack stack = player.getItemInHand(hand); ItemStack stack = player.getItemInHand(hand);
ItemStack stack1 = new ItemStack(TFMGItems.LIT_LITHIUM_BLADE.get(), 1, stack.getOrCreateTag()); ItemStack stack1 = TFMGItems.LIT_LITHIUM_BLADE.asStack();
Map<Enchantment, Integer> enchantments = stack.getAllEnchantments(); Map<Enchantment, Integer> enchantments = EnchantmentHelper.getEnchantments(stack);
enchantments.forEach(stack1::enchant); enchantments.forEach(stack1::enchant);

View File

@@ -6,6 +6,8 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Matrix3f; import com.mojang.math.Matrix3f;
import com.mojang.math.Matrix4f; import com.mojang.math.Matrix4f;
import com.mojang.math.Vector3f; import com.mojang.math.Vector3f;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRenderer;
@@ -13,10 +15,8 @@ import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT) @Environment(EnvType.CLIENT)
public class LithiumSparkRenderer extends EntityRenderer<LithiumSpark> { public class LithiumSparkRenderer extends EntityRenderer<LithiumSpark> {
private static final ResourceLocation TEXTURE_LOCATION = CreateTFMG.asResource("textures/entity/lithium_spark.png"); private static final ResourceLocation TEXTURE_LOCATION = CreateTFMG.asResource("textures/entity/lithium_spark.png");
private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION); private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION);

View File

@@ -3,12 +3,12 @@ package com.drmangotea.createindustry.items.weapons.quad_potato_cannon;
import com.drmangotea.createindustry.CreateTFMGClient; import com.drmangotea.createindustry.CreateTFMGClient;
import com.simibubi.create.content.equipment.zapper.ShootGadgetPacket; import com.simibubi.create.content.equipment.zapper.ShootGadgetPacket;
import com.simibubi.create.content.equipment.zapper.ShootableGadgetRenderHandler; import com.simibubi.create.content.equipment.zapper.ShootableGadgetRenderHandler;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
public class QuadPotatoCannonPacket extends ShootGadgetPacket { public class QuadPotatoCannonPacket extends ShootGadgetPacket {
@@ -44,13 +44,13 @@ public class QuadPotatoCannonPacket extends ShootGadgetPacket {
} }
@Override @Override
@OnlyIn(Dist.CLIENT) @Environment(EnvType.CLIENT)
protected void handleAdditional() { protected void handleAdditional() {
CreateTFMGClient.QUAD_POTATO_CANNON_RENDER_HANDLER.beforeShoot(pitch, location, motion, item); CreateTFMGClient.QUAD_POTATO_CANNON_RENDER_HANDLER.beforeShoot(pitch, location, motion, item);
} }
@Override @Override
@OnlyIn(Dist.CLIENT) @Environment(EnvType.CLIENT)
protected ShootableGadgetRenderHandler getHandler() { protected ShootableGadgetRenderHandler getHandler() {
return CreateTFMGClient.QUAD_POTATO_CANNON_RENDER_HANDLER; return CreateTFMGClient.QUAD_POTATO_CANNON_RENDER_HANDLER;
} }

View File

@@ -2,7 +2,6 @@ package com.drmangotea.createindustry.mixins;
import com.drmangotea.createindustry.base.TFMGPipes; import com.drmangotea.createindustry.base.TFMGPipes;
import com.drmangotea.createindustry.registry.TFMGBlocks;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllTags; import com.simibubi.create.AllTags;
import com.simibubi.create.content.fluids.FluidPropagator; import com.simibubi.create.content.fluids.FluidPropagator;
@@ -27,9 +26,6 @@ import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
import net.minecraftforge.fluids.capability.IFluidHandler;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Shadow;
@@ -123,23 +119,13 @@ public class FluidPropagatorMixin {
BlockPos connectedPos = pos.relative(side); BlockPos connectedPos = pos.relative(side);
BlockState connectedState = reader.getBlockState(connectedPos); BlockState connectedState = reader.getBlockState(connectedPos);
FluidTransportBehaviour pipe = FluidPropagator.getPipe(reader, connectedPos); FluidTransportBehaviour pipe = FluidPropagator.getPipe(reader, connectedPos);
if (pipe != null && pipe.canHaveFlowToward(connectedState, side.getOpposite())) return (pipe == null || !pipe.canHaveFlowToward(connectedState, side.getOpposite()))
return false; && (!PumpBlock.isPump(connectedState) || connectedState.getValue(PumpBlock.FACING).getAxis() != side.getAxis())
if (PumpBlock.isPump(connectedState) && connectedState.getValue(PumpBlock.FACING) && !VanillaFluidTargets.shouldPipesConnectTo(connectedState)
.getAxis() == side.getAxis()) && (!BlockHelper.hasBlockSolidSide(connectedState, reader, connectedPos, side.getOpposite())
return false; || AllTags.AllBlockTags.FAN_TRANSPARENT.matches(connectedState))
if (VanillaFluidTargets.shouldPipesConnectTo(connectedState)) && (connectedState.getMaterial().isReplaceable() && connectedState.getDestroySpeed(reader, connectedPos) != -1
return true; || connectedState.hasProperty(BlockStateProperties.WATERLOGGED));
if (BlockHelper.hasBlockSolidSide(connectedState, reader, connectedPos, side.getOpposite())
&& !AllTags.AllBlockTags.FAN_TRANSPARENT.matches(connectedState))
return false;
if (hasFluidCapability(reader, connectedPos, side.getOpposite()))
return false;
if (!(connectedState.getMaterial()
.isReplaceable() && connectedState.getDestroySpeed(reader, connectedPos) != -1)
&& !connectedState.hasProperty(BlockStateProperties.WATERLOGGED))
return false;
return true;
} }
@Shadow @Shadow
public static List<Direction> getPipeConnections(BlockState state, FluidTransportBehaviour pipe) { public static List<Direction> getPipeConnections(BlockState state, FluidTransportBehaviour pipe) {
@@ -153,15 +139,7 @@ public class FluidPropagatorMixin {
public static int getPumpRange() { public static int getPumpRange() {
return AllConfigs.server().fluids.mechanicalPumpRange.get(); return AllConfigs.server().fluids.mechanicalPumpRange.get();
} }
@Shadow
public static boolean hasFluidCapability(BlockGetter world, BlockPos pos, Direction side) {
BlockEntity tileEntity = world.getBlockEntity(pos);
if (tileEntity == null)
return false;
LazyOptional<IFluidHandler> capability =
tileEntity.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side);
return capability.isPresent();
}
@Shadow @Shadow
@Nullable @Nullable
public static Direction.Axis getStraightPipeAxis(BlockState state) { public static Direction.Axis getStraightPipeAxis(BlockState state) {

View File

@@ -1,127 +0,0 @@
package com.drmangotea.createindustry.mixins;
import java.util.ArrayList;
import java.util.List;
import com.drmangotea.createindustry.base.TFMGPipeModelData;
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
import com.simibubi.create.content.fluids.PipeAttachmentModel;
import org.jetbrains.annotations.NotNull;
import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
import com.simibubi.create.content.fluids.FluidTransportBehaviour.AttachmentTypes;
import com.simibubi.create.content.fluids.FluidTransportBehaviour.AttachmentTypes.ComponentPartials;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.model.BakedModelWrapperWithData;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.client.renderer.ItemBlockRenderTypes;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.ChunkRenderTypeSet;
import net.minecraftforge.client.model.data.ModelData;
import net.minecraftforge.client.model.data.ModelData.Builder;
import net.minecraftforge.client.model.data.ModelProperty;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import static net.minecraft.world.level.block.PipeBlock.PROPERTY_BY_DIRECTION;
@Mixin(PipeAttachmentModel.class)
public class PipeAttachmentModelMixin extends BakedModelWrapperWithData {
private static final ModelProperty<TFMGPipeModelData> PIPE_PROPERTY = new ModelProperty<>();
public PipeAttachmentModelMixin(BakedModel template) {
super(template);
}
/**
* @author DrMangoTea
* @reason locked pipes
*/
@Overwrite( remap = false)
protected ModelData.Builder gatherModelData(ModelData.Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state,
ModelData blockEntityData) {
TFMGPipeModelData data = new TFMGPipeModelData();
FluidTransportBehaviour transport = BlockEntityBehaviour.get(world, pos, FluidTransportBehaviour.TYPE);
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
if (transport != null)
for (Direction d : Iterate.directions) {
boolean shouldConnect = true;
if(world.getBlockState(pos.relative(d)).getBlock() instanceof FluidPipeBlock) {
if(d.getAxis().isHorizontal())
shouldConnect = world.getBlockState(pos.relative(d)).getValue(PROPERTY_BY_DIRECTION.get(d.getOpposite()));
}
data.putAttachment(d, transport.getRenderedRimAttachment(world, pos, state, d));
if(!shouldConnect)
if(state.getBlock() instanceof FluidPipeBlock)
if(state.getValue(PROPERTY_BY_DIRECTION.get(d)))
data.putAttachment(d, FluidTransportBehaviour.AttachmentTypes.RIM);
}
if (bracket != null)
data.putBracket(bracket.getBracket());
data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state));
return builder.with(PIPE_PROPERTY, data);
}
@SuppressWarnings("removal")
@Override
public ChunkRenderTypeSet getRenderTypes(@NotNull BlockState state, @NotNull RandomSource rand, @NotNull ModelData data) {
ChunkRenderTypeSet set = super.getRenderTypes(state, rand, data);
if (set.isEmpty()) {
return ItemBlockRenderTypes.getRenderLayers(state);
}
return set;
}
@Override
public List<BakedQuad> getQuads(BlockState state, Direction side, RandomSource rand, ModelData data, RenderType renderType) {
List<BakedQuad> quads = super.getQuads(state, side, rand, data, renderType);
if (data.has(PIPE_PROPERTY)) {
TFMGPipeModelData pipeData = data.get(PIPE_PROPERTY);
quads = new ArrayList<>(quads);
addQuads(quads, state, side, rand, data, pipeData, renderType);
}
return quads;
}
private void addQuads(List<BakedQuad> quads, BlockState state, Direction side, RandomSource rand, ModelData data,
TFMGPipeModelData pipeData, RenderType renderType) {
BakedModel bracket = pipeData.getBracket();
if (bracket != null)
quads.addAll(bracket.getQuads(state, side, rand, data, renderType));
for (Direction d : Iterate.directions) {
AttachmentTypes type = pipeData.getAttachment(d);
for (ComponentPartials partial : type.partials) {
quads.addAll(AllPartialModels.PIPE_ATTACHMENTS.get(partial)
.get(d)
.get()
.getQuads(state, side, rand, data, renderType));
}
}
if (pipeData.isEncased())
quads.addAll(AllPartialModels.FLUID_PIPE_CASING.get()
.getQuads(state, side, rand, data, renderType));
}
}

View File

@@ -6,6 +6,7 @@ import com.simibubi.create.content.processing.recipe.ProcessingRecipeBuilder.Pro
import com.simibubi.create.foundation.fluid.CombinedTankWrapper; import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
import com.simibubi.create.foundation.fluid.FluidIngredient; import com.simibubi.create.foundation.fluid.FluidIngredient;
import io.github.fabricators_of_create.porting_lib.transfer.item.RecipeWrapper; import io.github.fabricators_of_create.porting_lib.transfer.item.RecipeWrapper;
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
@@ -31,10 +32,10 @@ public class CastingRecipe extends ProcessingRecipe<RecipeWrapper> {
} }
public boolean matches(CombinedTankWrapper inv, Level worldIn) { public boolean matches(CombinedTankWrapper inv, Level worldIn) {
if (inv.getFluidInTank(0).getAmount()==0) if (inv.parts.get(0).iterator().next().getAmount() ==0)
return false; return false;
return fluidIngredients.get(0) return fluidIngredients.get(0)
.test(inv.getFluidInTank(0)); .test(new FluidStack(inv.parts.get(0).iterator().next().getResource(), inv.parts.get(0).iterator().next().getAmount()));
} }
public FluidIngredient getInputFluid(){ public FluidIngredient getInputFluid(){
return getFluidIngredients().get(0); return getFluidIngredients().get(0);

View File

@@ -9,7 +9,7 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.compat.jei.category.CreateRecipeCategory; import com.simibubi.create.compat.jei.category.CreateRecipeCategory;
import com.simibubi.create.foundation.fluid.FluidIngredient; import com.simibubi.create.foundation.fluid.FluidIngredient;
import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllGuiTextures;
import mezz.jei.api.forge.ForgeTypes; import mezz.jei.api.fabric.constants.FabricTypes;
import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.IFocusGroup;
@@ -41,7 +41,7 @@ public class AdvancedDistillationCategory extends CreateRecipeCategory<Distillat
builder builder
.addSlot(RecipeIngredientRole.INPUT, 18, 130-yModifier) .addSlot(RecipeIngredientRole.INPUT, 18, 130-yModifier)
.setBackground(getRenderedSlot(), -1, -1) .setBackground(getRenderedSlot(), -1, -1)
.addIngredients(ForgeTypes.FLUID_STACK, withImprovedVisibility(recipe.getInputFluid().getMatchingFluidStacks())) .addIngredients(FabricTypes.FLUID_STACK, withImprovedVisibility(recipe.getInputFluid().getMatchingFluidStacks()))
.addTooltipCallback(addFluidTooltip(recipe.getInputFluid().getRequiredAmount())); .addTooltipCallback(addFluidTooltip(recipe.getInputFluid().getRequiredAmount()));
@@ -50,7 +50,7 @@ public class AdvancedDistillationCategory extends CreateRecipeCategory<Distillat
builder builder
.addSlot(RecipeIngredientRole.OUTPUT, 105, y) .addSlot(RecipeIngredientRole.OUTPUT, 105, y)
.setBackground(getRenderedSlot(), -1, -1) .setBackground(getRenderedSlot(), -1, -1)
.addIngredient(ForgeTypes.FLUID_STACK, withImprovedVisibility(recipe.getFluidResults().get(i))) .addIngredient(FabricTypes.FLUID_STACK, withImprovedVisibility(recipe.getFluidResults().get(i)))
.addTooltipCallback(addFluidTooltip(recipe.getFirstFluidResult().getAmount())); .addTooltipCallback(addFluidTooltip(recipe.getFirstFluidResult().getAmount()));
} }

View File

@@ -8,6 +8,7 @@ import com.drmangotea.createindustry.registry.TFMGItems;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.compat.jei.category.CreateRecipeCategory; import com.simibubi.create.compat.jei.category.CreateRecipeCategory;
import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllGuiTextures;
import mezz.jei.api.fabric.constants.FabricTypes;
import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.IFocusGroup;
@@ -47,19 +48,19 @@ public class IndustrialBlastingCategory extends CreateRecipeCategory<IndustrialB
builder builder
.addSlot(RecipeIngredientRole.OUTPUT,140, 117) .addSlot(RecipeIngredientRole.OUTPUT,140, 117)
.setBackground(getRenderedSlot(), -1, -1) .setBackground(getRenderedSlot(), -1, -1)
.addIngredient(ForgeTypes.FLUID_STACK, withImprovedVisibility(recipe.getFluidResults().get(0))) .addIngredient(FabricTypes.FLUID_STACK, withImprovedVisibility(recipe.getFluidResults().get(0)))
.addTooltipCallback(addFluidTooltip(recipe.getFluidResults().get(0).getAmount())); .addTooltipCallback(addFluidTooltip(recipe.getFluidResults().get(0).getAmount()));
builder builder
.addSlot(RecipeIngredientRole.OUTPUT,160, 117) .addSlot(RecipeIngredientRole.OUTPUT,160, 117)
.setBackground(getRenderedSlot(), -1, -1) .setBackground(getRenderedSlot(), -1, -1)
.addIngredient(ForgeTypes.FLUID_STACK, withImprovedVisibility(recipe.getFluidResults().get(1))) .addIngredient(FabricTypes.FLUID_STACK, withImprovedVisibility(recipe.getFluidResults().get(1)))
.addTooltipCallback(addFluidTooltip(recipe.getFluidResults().get(1).getAmount())); .addTooltipCallback(addFluidTooltip(recipe.getFluidResults().get(1).getAmount()));
} }
@Override @Override
public void draw(IndustrialBlastingRecipe recipe, IRecipeSlotsView recipeSlotsView, net.minecraft.class_4587 stack, double mouseX, double mouseY) { public void draw(IndustrialBlastingRecipe recipe, IRecipeSlotsView recipeSlotsView, PoseStack stack, double mouseX, double mouseY) {
blastFurnace blastFurnace
.draw(stack, 50, 135); .draw(stack, 50, 135);

View File

@@ -2,24 +2,10 @@ package com.drmangotea.createindustry.recipes.jei.machines;
import com.drmangotea.createindustry.registry.TFMGBlocks; import com.drmangotea.createindustry.registry.TFMGBlocks;
import com.jozufozu.flywheel.core.PartialModel;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Vector3f; import com.mojang.math.Vector3f;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllPartialModels;
import com.simibubi.create.AllSpriteShifts;
import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics; import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics;
import com.simibubi.create.content.processing.burner.BlazeBurnerBlock; import com.simibubi.create.content.processing.burner.BlazeBurnerBlock;
import com.simibubi.create.foundation.block.render.SpriteShiftEntry;
import com.simibubi.create.foundation.render.CachedBufferer;
import com.simibubi.create.foundation.utility.AnimationTickHolder;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.LightTexture;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.util.Mth;
import net.minecraft.world.level.block.Blocks;
public class CokeOven extends AnimatedKinetics { public class CokeOven extends AnimatedKinetics {

View File

@@ -83,8 +83,6 @@ import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.ham
import com.drmangotea.createindustry.items.weapons.explosives.napalm.NapalmBombBlock; import com.drmangotea.createindustry.items.weapons.explosives.napalm.NapalmBombBlock;
import com.drmangotea.createindustry.blocks.machines.metal_processing.casting_basin.CastingBasinBlock; import com.drmangotea.createindustry.blocks.machines.metal_processing.casting_basin.CastingBasinBlock;
import com.drmangotea.createindustry.blocks.machines.metal_processing.casting_spout.CastingSpoutBlock; import com.drmangotea.createindustry.blocks.machines.metal_processing.casting_spout.CastingSpoutBlock;
import com.drmangotea.createindustry.items.CoalCokeBlockItem;
import com.drmangotea.createindustry.items.FossilstoneItem;
import com.drmangotea.createindustry.blocks.deposits.surface_scanner.SurfaceScannerBlock; import com.drmangotea.createindustry.blocks.deposits.surface_scanner.SurfaceScannerBlock;
import com.drmangotea.createindustry.blocks.machines.metal_processing.blast_furnace.BlastFurnaceOutputBlock; import com.drmangotea.createindustry.blocks.machines.metal_processing.blast_furnace.BlastFurnaceOutputBlock;
import com.drmangotea.createindustry.blocks.machines.metal_processing.blast_furnace.MoltenMetalBlock; import com.drmangotea.createindustry.blocks.machines.metal_processing.blast_furnace.MoltenMetalBlock;
@@ -272,7 +270,7 @@ public class TFMGBlocks {
.blockstate(simpleCubeAll("coal_coke_block")) .blockstate(simpleCubeAll("coal_coke_block"))
.tag(BlockTags.NEEDS_STONE_TOOL) .tag(BlockTags.NEEDS_STONE_TOOL)
.tag(Tags.Blocks.STORAGE_BLOCKS) .tag(Tags.Blocks.STORAGE_BLOCKS)
.item(CoalCokeBlockItem::new) .item()
.tag(Tags.Items.STORAGE_BLOCKS) .tag(Tags.Items.STORAGE_BLOCKS)
.build() .build()
.lang("Block of Coal Coke") .lang("Block of Coal Coke")
@@ -325,8 +323,7 @@ public class TFMGBlocks {
.properties(p -> p.requiresCorrectToolForDrops()) .properties(p -> p.requiresCorrectToolForDrops())
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate(simpleCubeAll("fossilstone")) .blockstate(simpleCubeAll("fossilstone"))
.item(FossilstoneItem::new) .simpleItem()
.build()
.lang("Fossilstone") .lang("Fossilstone")
.register(); .register();

View File

@@ -8,5 +8,7 @@ public class TFMGFuels {
public void register() { public void register() {
registry.add(TFMGItems.COAL_COKE.get(), 3200); registry.add(TFMGItems.COAL_COKE.get(), 3200);
registry.add(TFMGItems.COAL_COKE.get(), 3200); registry.add(TFMGItems.COAL_COKE.get(), 3200);
registry.add(TFMGBlocks.COAL_COKE_BLOCK.get().asItem(), 28800);
registry.add(TFMGBlocks.FOSSILSTONE.get().asItem(), 4000);
} }
} }

View File

@@ -1,3 +1,4 @@
accessWidener v1 named accessWidener v1 named
accessible method net/minecraft/tags/FluidTags create (Ljava/lang/String;)Lnet/minecraft/tags/TagKey; accessible method net/minecraft/tags/FluidTags create (Ljava/lang/String;)Lnet/minecraft/tags/TagKey;
accessible method net/minecraft/world/damagesource/DamageSource <init> (Ljava/lang/String;)V