Skip to content

Commit

Permalink
add CryoFluid
Browse files Browse the repository at this point in the history
  • Loading branch information
Keniis0712 committed Jul 16, 2024
1 parent ec07d13 commit ac721ec
Show file tree
Hide file tree
Showing 10 changed files with 183 additions and 4 deletions.
15 changes: 14 additions & 1 deletion src/main/java/name/minedustry/MinedustryClient.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,24 @@
package name.minedustry;

import name.minedustry.fluid.Fluids;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
import net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandlerRegistry;
import net.fabricmc.fabric.api.client.render.fluid.v1.SimpleFluidRenderHandler;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.util.Identifier;

public class MinedustryClient implements ClientModInitializer {

@Override
public void onInitializeClient() {

FluidRenderHandlerRegistry.INSTANCE.register(Fluids.STILL_CRYOFLUID, Fluids.FLOWING_CRYOFLUID,
new SimpleFluidRenderHandler(
Identifier.of("minedustry", "block/cryofluid_still"),
Identifier.of("minedustry", "block/cryofluid_flow"),
0x66ccff
)
);
BlockRenderLayerMap.INSTANCE.putFluids(RenderLayer.getTranslucent(), Fluids.STILL_CRYOFLUID, Fluids.FLOWING_CRYOFLUID);
}
}
27 changes: 24 additions & 3 deletions src/main/java/name/minedustry/block/MinedustryBlocks.java
Original file line number Diff line number Diff line change
@@ -1,34 +1,55 @@
package name.minedustry.block;

import name.minedustry.Minedustry;
import name.minedustry.fluid.Fluids;
import net.minecraft.block.AbstractBlock;
import net.minecraft.block.Block;
import net.minecraft.block.FluidBlock;
import net.minecraft.block.MapColor;
import net.minecraft.block.piston.PistonBehavior;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.sound.BlockSoundGroup;
import net.minecraft.util.Identifier;

public class MinedustryBlocks {
public static final Block COPPER_WALL = register(
public static final Block COPPER_WALL = register(
"copper_wall",
new Block(
AbstractBlock.Settings.create()
.requiresTool()
.strength(1.5f, 6.0f)));
public static final Block TITANIUM_WALL = register(
public static final Block TITANIUM_WALL = register(
"titanium_wall",
new Block(
AbstractBlock.Settings.create()
.requiresTool()
.strength(2.5f, 6.5f)));
public static final Block THORIUM_WALL = register(
public static final Block THORIUM_WALL = register(
"thorium_wall",
new Block(
AbstractBlock.Settings.create()
.requiresTool()
.strength(3f, 7f)));

public static final Block CRYOFLUID = register(
"cryofluid",
new FluidBlock(
Fluids.STILL_CRYOFLUID,
AbstractBlock.Settings.create()
.mapColor(MapColor.WATER_BLUE)
.replaceable()
.noCollision()
.strength(100.0F)
.pistonBehavior(PistonBehavior.DESTROY)
.dropsNothing()
.liquid()
.sounds(BlockSoundGroup.INTENTIONALLY_EMPTY)
)
);

public static void registerBlockItems(String id, Block block) {
BlockItem item = Registry.register(
Registries.ITEM,
Expand Down
113 changes: 113 additions & 0 deletions src/main/java/name/minedustry/fluid/CryoFluid.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
package name.minedustry.fluid;

import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.FluidBlock;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.fluid.FlowableFluid;
import net.minecraft.fluid.Fluid;
import net.minecraft.fluid.FluidState;
import net.minecraft.item.Item;
import net.minecraft.state.StateManager;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.world.BlockView;
import net.minecraft.world.World;
import net.minecraft.world.WorldAccess;
import net.minecraft.world.WorldView;

import static name.minedustry.block.MinedustryBlocks.CRYOFLUID;
import static name.minedustry.item.MinedustryItems.CRYOFLUID_BUCKET;

public abstract class CryoFluid extends FlowableFluid {
@Override
public Fluid getFlowing() {
return Fluids.FLOWING_CRYOFLUID;
}

@Override
public Fluid getStill() {
return Fluids.STILL_CRYOFLUID;
}

@Override
public Item getBucketItem() {
return CRYOFLUID_BUCKET;
}

@Override
protected boolean isInfinite(World world) {
return false;
}

@Override
protected void beforeBreakingBlock(WorldAccess world, BlockPos pos, BlockState state) {
BlockEntity blockEntity = state.hasBlockEntity() ? world.getBlockEntity(pos) : null;
Block.dropStacks(state, world, pos, blockEntity);
}

@Override
public int getMaxFlowDistance(WorldView world) {
return 4;
}

@Override
public BlockState toBlockState(FluidState state) {
return CRYOFLUID.getDefaultState().with(FluidBlock.LEVEL, getBlockStateLevel(state));
}

@Override
public boolean matchesType(Fluid fluid) {
return fluid == getFlowing() || fluid == getStill();
}

@Override
protected int getLevelDecreasePerBlock(WorldView world) {
return 1;
}

@Override
public int getTickRate(WorldView world) {
return 5;
}

@Override
public boolean canBeReplacedWith(FluidState state, BlockView world, BlockPos pos, Fluid fluid, Direction direction) {
return false;
}

@Override
protected float getBlastResistance() {
return 100.0F;
}

public static class Flowing extends CryoFluid {
@Override
protected void appendProperties(StateManager.Builder<Fluid, FluidState> builder) {
super.appendProperties(builder);
builder.add(LEVEL);
}

@Override
public int getLevel(FluidState state) {
return state.get(LEVEL);
}

@Override
public boolean isStill(FluidState state) {
return false;
}
}

public static class Still extends CryoFluid {
@Override
public int getLevel(FluidState state) {
return 8;
}

@Override
public boolean isStill(FluidState state) {
return true;
}
}
}
15 changes: 15 additions & 0 deletions src/main/java/name/minedustry/fluid/Fluids.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package name.minedustry.fluid;

import net.minecraft.fluid.FlowableFluid;
import net.minecraft.fluid.Fluid;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;

public class Fluids {
public static final FlowableFluid FLOWING_CRYOFLUID = register("cryofluid", new CryoFluid.Flowing());
public static final FlowableFluid STILL_CRYOFLUID = register("cryofluid", new CryoFluid.Still());

private static <T extends Fluid> T register(String id, T value) {
return Registry.register(Registries.FLUID, id, value);
}
}
2 changes: 2 additions & 0 deletions src/main/java/name/minedustry/item/MinedustryItemGroups.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ public class MinedustryItemGroups {
entries.add(MinedustryItems.TITANIUM);
entries.add(MinedustryItems.THORIUM);

entries.add(MinedustryItems.CRYOFLUID_BUCKET);

entries.add(MinedustryBlocks.COPPER_WALL);
entries.add(MinedustryBlocks.TITANIUM_WALL);
entries.add(MinedustryBlocks.THORIUM_WALL);
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/name/minedustry/item/MinedustryItems.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,22 @@
package name.minedustry.item;

import name.minedustry.Minedustry;
import name.minedustry.fluid.Fluids;
import net.minecraft.item.BucketItem;
import net.minecraft.item.Item;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;

import static net.minecraft.item.Items.BUCKET;

public class MinedustryItems {
public static final Item LEAD = registerItems("lead", new Item(new Item.Settings()));
public static final Item TITANIUM = registerItems("titanium", new Item(new Item.Settings()));
public static final Item THORIUM = registerItems("thorium", new Item(new Item.Settings()));

public static final Item CRYOFLUID_BUCKET = registerItems("cryofluid_bucket", new BucketItem(Fluids.STILL_CRYOFLUID, new Item.Settings().recipeRemainder(BUCKET).maxCount(1)));

private static Item registerItems(String id, Item item){
return Registry.register(
Registries.ITEM,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minedustry:block/cryofluid"
}
}
}
2 changes: 2 additions & 0 deletions src/main/resources/assets/minedustry/lang/zh_cn.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
"item.minedustry.titanium": "",
"item.minedustry.thorium": "",

"item.minedustry.cryofluid_bucket": "冷冻液桶",

"block.minedustry.copper_wall": "铜墙",
"block.minedustry.titanium_wall": "钛墙",
"block.minedustry.thorium_wall": "钍墙"
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit ac721ec

Please sign in to comment.