Config event update fixed. Milker fluid tank handling issue fixed. Device collision shapes adapted to allow attaching levers.
This commit is contained in:
parent
2e341ef659
commit
b715ea13c1
11 changed files with 82 additions and 61 deletions
|
@ -4,4 +4,4 @@ org.gradle.jvmargs=-Xmx8G
|
|||
version_minecraft=1.17.1
|
||||
version_forge_minecraft=1.17.1-37.0.51
|
||||
version_jei=1.17.1:8.0.0.15
|
||||
version_engineersdecor=1.1.17-b3
|
||||
version_engineersdecor=1.1.17-b4
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/",
|
||||
"1.17.1": {
|
||||
"1.1.17-b4": "[F] Config event update fixed.\n[F] Milker fluid tank handling issue fixed.\n[F] Device collision shapes adapted to allow attaching levers.",
|
||||
"1.1.17-b3": "[F] Fixed Factory Hopper GUI element events.",
|
||||
"1.1.17-b2": "[F] Updated to Forge 1.17.1-37.0.51 to fix `ToolType not found` startup crash.\n[A] JEI plugin enabled.\n[A] Dark Shingle Roof recipe variant added.",
|
||||
"1.1.17-b1": "[U] Initial MC 1.17.1 port.\n[M] Clinker Brick textures adapted to contemporary MC textures.\n[D] Gas Concrete dropped (Rebar Concrete suffices for texture variation).\n[D] Treated Wood Side Table dropped.\n[M] Updated zh_cn (PR#183, Lyaiya).",
|
||||
|
@ -43,6 +44,6 @@
|
|||
},
|
||||
"promos": {
|
||||
"1.17.1-recommended": "1.1.14",
|
||||
"1.17.1-latest": "1.1.17-b3"
|
||||
"1.17.1-latest": "1.1.17-b4"
|
||||
}
|
||||
}
|
|
@ -11,6 +11,10 @@ Mod sources for Minecraft version 1.16.x.
|
|||
|
||||
## Version history
|
||||
|
||||
- v1.1.17-b4 [F] Config event update fixed.
|
||||
[F] Milker fluid tank handling issue fixed.
|
||||
[F] Device collision shapes adapted to allow attaching levers.
|
||||
|
||||
- v1.1.17-b3 [F] Fixed Factory Hopper GUI element events.
|
||||
|
||||
- v1.1.17-b2 [F] Updated to Forge 1.17.1-37.0.51 to fix `ToolType not found` startup crash.
|
||||
|
|
|
@ -17,6 +17,7 @@ import net.minecraftforge.event.entity.living.LivingEvent;
|
|||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.ModLoadingContext;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.event.config.ModConfigEvent;
|
||||
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
||||
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||
|
@ -44,8 +45,6 @@ public class ModEngineersDecor
|
|||
ModLoadingContext.get().registerConfig(net.minecraftforge.fml.config.ModConfig.Type.COMMON, ModConfig.COMMON_CONFIG_SPEC);
|
||||
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::onSetup);
|
||||
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::onClientSetup);
|
||||
// FMLJavaModLoadingContext.get().getModEventBus().addListener(ForgeEvents::onConfigLoad);
|
||||
// FMLJavaModLoadingContext.get().getModEventBus().addListener(ForgeEvents::onConfigReload);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
|
@ -93,20 +92,20 @@ public class ModEngineersDecor
|
|||
public static void onRegisterContainerTypes(final RegistryEvent.Register<MenuType<?>> event)
|
||||
{ ModContent.registerContainers(event); }
|
||||
|
||||
/*
|
||||
public static void onConfigLoad(net.minecraftforge.fml.config.ModConfig.Loading configEvent)
|
||||
@SubscribeEvent
|
||||
public static void onConfigLoad(final ModConfigEvent.Loading event)
|
||||
{ ModConfig.apply(); }
|
||||
|
||||
public static void onConfigReload(net.minecraftforge.fml.config.ModConfig.Reloading configEvent)
|
||||
@SubscribeEvent
|
||||
public static void onConfigReload(final ModConfigEvent.Reloading event)
|
||||
{
|
||||
try {
|
||||
ModEngineersDecor.logger().info("Config file changed {}", configEvent.getConfig().getFileName());
|
||||
ModEngineersDecor.logger().info("Config file changed {}", event.getConfig().getFileName());
|
||||
ModConfig.apply();
|
||||
} catch(Throwable e) {
|
||||
ModEngineersDecor.logger().error("Failed to load changed config: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
@ -43,6 +43,9 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
|||
import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.Shapes;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.common.ForgeHooks;
|
||||
|
@ -93,6 +96,10 @@ public class EdElectricalFurnace
|
|||
public BlockEntityType<EdElectricalFurnace.ElectricalFurnaceTileEntity> getBlockEntityType()
|
||||
{ return ModContent.TET_SMALL_ELECTRICAL_FURNACE; }
|
||||
|
||||
@Override
|
||||
public VoxelShape getCollisionShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext selectionContext)
|
||||
{ return Shapes.block(); }
|
||||
|
||||
@Override
|
||||
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder)
|
||||
{ super.createBlockStateDefinition(builder); builder.add(LIT); }
|
||||
|
|
|
@ -41,6 +41,9 @@ import net.minecraft.world.level.material.Fluid;
|
|||
import net.minecraft.world.level.material.Fluids;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.Shapes;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.common.capabilities.ICapabilityProvider;
|
||||
|
@ -144,6 +147,10 @@ public class EdFluidBarrel
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public VoxelShape getCollisionShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext selectionContext)
|
||||
{ return Shapes.block(); }
|
||||
|
||||
@Override
|
||||
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder)
|
||||
{ super.createBlockStateDefinition(builder); builder.add(FILL_LEVEL); }
|
||||
|
|
|
@ -21,6 +21,7 @@ import net.minecraft.world.entity.LivingEntity;
|
|||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
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;
|
||||
|
@ -36,6 +37,9 @@ import net.minecraft.world.level.material.Fluid;
|
|||
import net.minecraft.world.level.material.FluidState;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.Shapes;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
|
@ -82,6 +86,10 @@ public class EdFluidFunnel
|
|||
public RenderTypeHint getRenderTypeHint()
|
||||
{ return RenderTypeHint.CUTOUT; }
|
||||
|
||||
@Override
|
||||
public VoxelShape getCollisionShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext selectionContext)
|
||||
{ return Shapes.block(); }
|
||||
|
||||
@Override
|
||||
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder)
|
||||
{ super.createBlockStateDefinition(builder); builder.add(FILL_LEVEL); }
|
||||
|
|
|
@ -22,6 +22,7 @@ import net.minecraft.world.entity.player.Player;
|
|||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
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;
|
||||
|
@ -34,6 +35,9 @@ import net.minecraft.world.level.block.state.properties.IntegerProperty;
|
|||
import net.minecraft.world.level.material.Fluids;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.Shapes;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
|
@ -77,6 +81,10 @@ public class EdFreezer
|
|||
public BlockEntityType<EdFreezer.FreezerTileEntity> getBlockEntityType()
|
||||
{ return ModContent.TET_FREEZER; }
|
||||
|
||||
@Override
|
||||
public VoxelShape getCollisionShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext selectionContext)
|
||||
{ return Shapes.block(); }
|
||||
|
||||
@Override
|
||||
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder)
|
||||
{ super.createBlockStateDefinition(builder); builder.add(PHASE); }
|
||||
|
|
|
@ -43,8 +43,10 @@ import net.minecraft.world.phys.AABB;
|
|||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.energy.CapabilityEnergy;
|
||||
import net.minecraftforge.energy.IEnergyStorage;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import net.minecraftforge.items.ItemHandlerHelper;
|
||||
|
@ -76,7 +78,7 @@ public class EdMilker
|
|||
public static final int MAX_ENERGY_TRANSFER = 512;
|
||||
public static final int DEFAULT_ENERGY_CONSUMPTION = 0;
|
||||
public static final int DEFAULT_MILKING_DELAY_PER_COW = 4000;
|
||||
private static final FluidStack NO_MILK_FLUID = new FluidStack(Fluids.WATER, 0);
|
||||
private static final FluidStack NO_MILK_FLUID = new FluidStack(Fluids.WATER, 1000);
|
||||
|
||||
private static FluidStack milk_fluid_ = NO_MILK_FLUID;
|
||||
private static final HashMap<ItemStack, ItemStack> milk_containers_ = new HashMap<>();
|
||||
|
@ -113,7 +115,10 @@ public class EdMilker
|
|||
public static final BooleanProperty ACTIVE = BooleanProperty.create("active");
|
||||
|
||||
public MilkerBlock(long config, BlockBehaviour.Properties builder, final AABB[] unrotatedAABBs)
|
||||
{ super(config, builder, unrotatedAABBs); }
|
||||
{
|
||||
super(config, builder, unrotatedAABBs);
|
||||
overrideCollisionShape(Auxiliaries.getPixeledAABB(0,0,0, 16,24,16));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
|
@ -213,8 +218,8 @@ public class EdMilker
|
|||
public MilkerTileEntity(BlockPos pos, BlockState state)
|
||||
{
|
||||
super(ModContent.TET_SMALL_MILKING_MACHINE, pos, state);
|
||||
tank_ = new Fluidics.Tank(TANK_CAPACITY, 0, BUCKET_SIZE, (fs)->(has_milk_fluid() && fs.isFluidEqual(milk_fluid_)));
|
||||
fluid_handler_ = tank_.createFluidHandler();
|
||||
tank_ = new Fluidics.Tank(TANK_CAPACITY, 0, BUCKET_SIZE, fs->fs.isFluidEqual(milk_fluid_));
|
||||
fluid_handler_ = tank_.createOutputFluidHandler();
|
||||
battery_ = new RfEnergy.Battery(MAX_ENERGY_BUFFER, MAX_ENERGY_TRANSFER, 0);
|
||||
energy_handler_ = battery_.createEnergyHandler();
|
||||
reset();
|
||||
|
@ -252,6 +257,9 @@ public class EdMilker
|
|||
if(!battery_.isEmpty()) battery_.save(nbt);
|
||||
}
|
||||
|
||||
private boolean has_milk_fluid()
|
||||
{ return !(NO_MILK_FLUID.isFluidEqual(milk_fluid_)); }
|
||||
|
||||
private IFluidHandler fluid_handler()
|
||||
{ return fluid_handler_.orElse(null); }
|
||||
|
||||
|
@ -285,54 +293,15 @@ public class EdMilker
|
|||
fluid_handler_.invalidate();
|
||||
}
|
||||
|
||||
// IFluidTank ------------------------------------------------------------------------------------------
|
||||
|
||||
private boolean has_milk_fluid()
|
||||
{ return !(NO_MILK_FLUID.isFluidEqual(milk_fluid_)); }
|
||||
|
||||
// @Override
|
||||
// @Nonnull
|
||||
// public FluidStack getFluid()
|
||||
// { return has_milk_fluid() ? (new FluidStack(milk_fluid_, fluid_level())) : (FluidStack.EMPTY); }
|
||||
//
|
||||
// @Override
|
||||
// public int getFluidAmount()
|
||||
// { return has_milk_fluid() ? fluid_level() : 0; }
|
||||
//
|
||||
// @Override
|
||||
// public int getCapacity()
|
||||
// { return TANK_CAPACITY; }
|
||||
//
|
||||
// @Override
|
||||
// public boolean isFluidValid(FluidStack stack)
|
||||
// { return has_milk_fluid() && stack.isFluidEqual(milk_fluid_); }
|
||||
//
|
||||
// @Override
|
||||
// public int fill(FluidStack resource, IFluidHandler.FluidAction action)
|
||||
// { return 0; }
|
||||
//
|
||||
// @Override
|
||||
// @Nonnull
|
||||
// public FluidStack drain(FluidStack resource, IFluidHandler.FluidAction action)
|
||||
// { return (!resource.isFluidEqual(milk_fluid_)) ? (FluidStack.EMPTY) : drain(resource.getAmount(), action); }
|
||||
//
|
||||
// @Override
|
||||
// @Nonnull
|
||||
// public FluidStack drain(int maxDrain, IFluidHandler.FluidAction action)
|
||||
// {
|
||||
// if((!has_milk_fluid()) || (fluid_level() <= 0)) return FluidStack.EMPTY;
|
||||
// return tank_.drain(maxDrain, action);
|
||||
// }
|
||||
|
||||
// ICapabilityProvider ---------------------------------------------------------------------------
|
||||
|
||||
// @Override
|
||||
// public <T> LazyOptional<T> getCapability(net.minecraftforge.common.capabilities.Capability<T> capability, @Nullable Direction facing)
|
||||
// {
|
||||
// if((capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) && has_milk_fluid()) return fluid_handler_.cast();
|
||||
// if((capability == CapabilityEnergy.ENERGY) && (energy_consumption_>0)) return energy_handler_.cast();
|
||||
// return super.getCapability(capability, facing);
|
||||
// }
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(net.minecraftforge.common.capabilities.Capability<T> capability, @Nullable Direction facing)
|
||||
{
|
||||
if((capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) && has_milk_fluid()) return fluid_handler_.cast();
|
||||
if((capability == CapabilityEnergy.ENERGY) && (energy_consumption_>0)) return energy_handler_.cast();
|
||||
return super.getCapability(capability, facing);
|
||||
}
|
||||
|
||||
// ITickable ------------------------------------------------------------------------------------
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@ import net.minecraft.world.item.Item;
|
|||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
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;
|
||||
|
@ -39,6 +40,9 @@ import net.minecraft.world.level.block.state.properties.IntegerProperty;
|
|||
import net.minecraft.world.level.material.Fluids;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.Shapes;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
|
@ -83,6 +87,10 @@ public class EdMineralSmelter
|
|||
public BlockEntityType<EdMineralSmelter.MineralSmelterTileEntity> getBlockEntityType()
|
||||
{ return ModContent.TET_MINERAL_SMELTER; }
|
||||
|
||||
@Override
|
||||
public VoxelShape getCollisionShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext selectionContext)
|
||||
{ return Shapes.block(); }
|
||||
|
||||
@Override
|
||||
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder)
|
||||
{ super.createBlockStateDefinition(builder); builder.add(PHASE); }
|
||||
|
|
|
@ -273,12 +273,14 @@ public class StandardBlocks
|
|||
{
|
||||
public static final DirectionProperty FACING = DirectionalBlock.FACING;
|
||||
protected final ArrayList<VoxelShape> vshapes;
|
||||
protected final ArrayList<VoxelShape> cshapes;
|
||||
|
||||
public Directed(long config, BlockBehaviour.Properties properties, final Supplier<ArrayList<VoxelShape>> shape_supplier)
|
||||
{
|
||||
super(config, properties);
|
||||
registerDefaultState(super.defaultBlockState().setValue(FACING, Direction.UP));
|
||||
vshapes = shape_supplier.get();
|
||||
cshapes = new ArrayList<>(vshapes);
|
||||
}
|
||||
|
||||
public Directed(long config, BlockBehaviour.Properties properties, final AABB[] unrotatedAABBs)
|
||||
|
@ -301,6 +303,9 @@ public class StandardBlocks
|
|||
public Directed(long config, BlockBehaviour.Properties properties, final AABB unrotatedAABB)
|
||||
{ this(config, properties, new AABB[]{unrotatedAABB}); }
|
||||
|
||||
protected void overrideCollisionShape(final AABB unrotatedAABB)
|
||||
{ for(int i=0; i<cshapes.size(); ++i) cshapes.set(i, Shapes.create(unrotatedAABB)); }
|
||||
|
||||
@Override
|
||||
public boolean isPossibleToRespawnInThis()
|
||||
{ return false; }
|
||||
|
@ -315,7 +320,7 @@ public class StandardBlocks
|
|||
|
||||
@Override
|
||||
public VoxelShape getCollisionShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext selectionContext)
|
||||
{ return getShape(state, world, pos, selectionContext); }
|
||||
{ return cshapes.get((state.getValue(FACING)).get3DDataValue() & 0x7); }
|
||||
|
||||
@Override
|
||||
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder)
|
||||
|
@ -346,12 +351,14 @@ public class StandardBlocks
|
|||
{
|
||||
public static final DirectionProperty HORIZONTAL_FACING = BlockStateProperties.HORIZONTAL_FACING;
|
||||
protected final ArrayList<VoxelShape> vshapes;
|
||||
protected final ArrayList<VoxelShape> cshapes;
|
||||
|
||||
public Horizontal(long config, BlockBehaviour.Properties properties, final Supplier<ArrayList<VoxelShape>> shape_supplier)
|
||||
{
|
||||
super(config|CFG_HORIZIONTAL, properties);
|
||||
registerDefaultState(super.defaultBlockState().setValue(HORIZONTAL_FACING, Direction.NORTH));
|
||||
vshapes = shape_supplier.get();
|
||||
cshapes = new ArrayList<>(vshapes);
|
||||
}
|
||||
|
||||
public Horizontal(long config, BlockBehaviour.Properties properties, final AABB[] unrotatedAABBs)
|
||||
|
@ -374,13 +381,16 @@ public class StandardBlocks
|
|||
));
|
||||
}
|
||||
|
||||
protected void overrideCollisionShape(final AABB unrotatedAABB)
|
||||
{ for(int i=0; i<cshapes.size(); ++i) cshapes.set(i, Shapes.create(unrotatedAABB)); }
|
||||
|
||||
@Override
|
||||
public VoxelShape getShape(BlockState state, BlockGetter source, BlockPos pos, CollisionContext selectionContext)
|
||||
{ return vshapes.get((state.getValue(HORIZONTAL_FACING)).get3DDataValue() & 0x7); }
|
||||
|
||||
@Override
|
||||
public VoxelShape getCollisionShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext selectionContext)
|
||||
{ return getShape(state, world, pos, selectionContext); }
|
||||
{ return cshapes.get((state.getValue(HORIZONTAL_FACING)).get3DDataValue() & 0x7); }
|
||||
|
||||
@Override
|
||||
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue