Skip to content

Commit f796b67

Browse files
author
pidoras
committed
Revert "raw entity has been improved and many liquid capsules have been added"
This reverts commit cd58cd0.
1 parent cd58cd0 commit f796b67

63 files changed

Lines changed: 1960 additions & 302 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/main/java/net/infugogr/barracuda/Barracuda.java

Lines changed: 44 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
import net.fabricmc.api.ModInitializer;
44
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry;
5+
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidStorage;
6+
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
7+
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariantAttributeHandler;
8+
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariantAttributes;
59
import net.fabricmc.fabric.api.transfer.v1.item.ItemStorage;
610
import net.infugogr.barracuda.block.ModBlocks;
711
import net.infugogr.barracuda.block.entity.*;
@@ -11,17 +15,22 @@
1115
import net.infugogr.barracuda.entity.custom.BassFishEntity;
1216
import net.infugogr.barracuda.entity.custom.ModGiantEntity;
1317
import net.infugogr.barracuda.entity.effect.ModStatusEffects;
18+
import net.infugogr.barracuda.fluid.FluidData;
19+
import net.infugogr.barracuda.fluid.ModFluids;
1420
import net.infugogr.barracuda.item.ModItemGroups;
1521
import net.infugogr.barracuda.item.ModItems;
1622
import net.infugogr.barracuda.screenhandler.ModScreenHandlerType;
1723
import net.infugogr.barracuda.sound.ModSounds;
24+
import net.infugogr.barracuda.util.ModTags;
1825
import net.kyrptonaught.customportalapi.api.CustomPortalBuilder;
26+
import net.minecraft.particle.ParticleTypes;
1927
import net.minecraft.text.Text;
2028
import net.minecraft.util.Identifier;
29+
import net.minecraft.world.World;
30+
import org.jetbrains.annotations.Nullable;
2131
import org.slf4j.Logger;
2232
import org.slf4j.LoggerFactory;
2333
import team.reborn.energy.api.EnergyStorage;
24-
// import net.infugogr.barracuda.registers.*;
2534

2635
public class Barracuda implements ModInitializer {
2736
public static final String MOD_ID = "barracuda";
@@ -44,6 +53,7 @@ public void onInitialize() {
4453
ModScreenHandlerType.registerModScreenHandlerType();
4554
ModBlockEntityType.registerModBlockEntityType();
4655
ModSounds.registerSounds();
56+
ModFluids.register();
4757
// configReg.load();
4858

4959

@@ -56,19 +66,20 @@ public void onInitialize() {
5666
EnergyStorage.SIDED.registerForBlockEntity(SMESblockEntity::getEnergyProvider, ModBlockEntityType.SMES);
5767
ItemStorage.SIDED.registerForBlockEntity(SMESblockEntity::getInventoryProvider, ModBlockEntityType.SMES);
5868

69+
EnergyStorage.SIDED.registerForBlockEntity(OilRefineryBlockEntity::getEnergyProvider, ModBlockEntityType.OIL_REFINERY);
70+
ItemStorage.SIDED.registerForBlockEntity(OilRefineryBlockEntity::getInventoryProvider, ModBlockEntityType.OIL_REFINERY);
71+
FluidStorage.SIDED.registerForBlockEntity(OilRefineryBlockEntity::getFluidProvider, ModBlockEntityType.OIL_REFINERY);
72+
73+
5974
//EnergyStorage.SIDED.registerForBlockEntity(TeleporterBlockEntity::getEnergyProvider, ModBlockEntityType.TELEPORTER);
6075
//ItemStorage.SIDED.registerForBlockEntity(TeleporterBlockEntity::getInventoryProvider, ModBlockEntityType.TELEPORTER);
6176

6277
EnergyStorage.SIDED.registerForBlockEntity(LVcableBlockEntity::getEnergyProvider, ModBlockEntityType.LVCABLE);
63-
6478
EnergyStorage.SIDED.registerForBlockEntity(HVcableBlockEntity::getEnergyProvider, ModBlockEntityType.HVCABLE);
6579

6680
FabricDefaultAttributeRegistry.register(ModEntities.GIANT, ModGiantEntity.createGiantAttributes());
6781
FabricDefaultAttributeRegistry.register(ModEntities.BASS_FISH, BassFishEntity.createBassFishAttributes());
6882
FabricDefaultAttributeRegistry.register(ModEntities.AZURE_SERPENT, AzureSerpentEntity.createAzureSerpentAttributes());
69-
70-
71-
// geco mobs
7283
FabricDefaultAttributeRegistry.register(ModEntities.BARRACUDA, BarracudaEntity.setAttributes());
7384
FabricDefaultAttributeRegistry.register(ModEntities.AZUER_REAPER, BarracudaEntity.setAttributes());
7485

@@ -79,13 +90,36 @@ public void onInitialize() {
7990
.tintColor(0xc76efa)
8091
.registerPortal();
8192

93+
// Fluid Properties
94+
var commonFluidAttributes = new FluidVariantAttributeHandler() {
95+
@Override
96+
public int getViscosity(FluidVariant variant, @Nullable World world) {
97+
return 7500;
98+
}
99+
};
100+
101+
FluidVariantAttributes.register(ModFluids.CRUDE_OIL.still(), commonFluidAttributes);
102+
FluidVariantAttributes.register(ModFluids.CRUDE_OIL.flowing(), commonFluidAttributes);
103+
104+
// Fluid Data
105+
var commonFluidData = new FluidData.Builder(ModTags.Fluids.CRUDE_OIL)
106+
.preventsBlockSpreading()
107+
.canSwim()
108+
.fluidMovementSpeed((entity, speed) -> 0.01F)
109+
.applyWaterMovement()
110+
.applyBuoyancy(itemEntity -> itemEntity.setVelocity(itemEntity.getVelocity().add(0.0D, 0.01D, 0.0D)))
111+
.canCauseDrowning()
112+
.shouldWitchDrinkWaterBreathing()
113+
.affectsBlockBreakSpeed()
114+
.bubbleParticle(ParticleTypes.ASH)
115+
.splashParticle(ParticleTypes.HEART)
116+
.build();
117+
118+
FluidData.registerFluidData(ModFluids.CRUDE_OIL.still(), commonFluidData);
119+
FluidData.registerFluidData(ModFluids.CRUDE_OIL.flowing(), commonFluidData);
120+
82121
LOGGER.info("Loaded!");
83122
}
84-
85-
// public static ConfigRegister getConfigRegister(){
86-
// return configReg;
87-
// }
88-
89123
public static Identifier id(String path) {
90124
return Identifier.of(MOD_ID, path);
91125
}
Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
package net.infugogr.barracuda;
22

33
import net.fabricmc.api.ClientModInitializer;
4+
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
45
import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry;
56
import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry;
6-
import net.infugogr.barracuda.block.entity.ModBlockEntityType;
7-
import net.infugogr.barracuda.block.entity.client.TeleporterBlockRenderer;
87
import net.infugogr.barracuda.entity.ModEntities;
98
import net.infugogr.barracuda.entity.client.*;
10-
import net.infugogr.barracuda.screenhandler.FishingNetScreen;
11-
import net.infugogr.barracuda.screenhandler.FuelGeneratorScreen;
12-
import net.infugogr.barracuda.screenhandler.ModScreenHandlerType;
13-
import net.infugogr.barracuda.screenhandler.SMESScreen;
9+
import net.infugogr.barracuda.fluid.ModFluids;
10+
import net.infugogr.barracuda.fluid.RenderFluidHandler;
11+
import net.infugogr.barracuda.screenhandler.*;
1412
import net.minecraft.client.gui.screen.ingame.HandledScreens;
15-
import net.minecraft.client.render.block.entity.BlockEntityRendererFactories;
13+
import net.minecraft.client.render.RenderLayer;
14+
import net.minecraft.util.Identifier;
1615

1716
public class BarracudaClient implements ClientModInitializer {
1817

@@ -23,20 +22,21 @@ public void onInitializeClient() {
2322
HandledScreens.register(ModScreenHandlerType.FUEL_GENERATOR, FuelGeneratorScreen::new);
2423
HandledScreens.register(ModScreenHandlerType.SMES, SMESScreen::new);
2524
HandledScreens.register(ModScreenHandlerType.FISHING_NET, FishingNetScreen::new);
25+
HandledScreens.register(ModScreenHandlerType.OIL_REFINERY, OilRefineryScreen::new);
2626

2727
EntityRendererRegistry.register(ModEntities.GIANT, GiantRenderer::new);
2828
EntityModelLayerRegistry.registerModelLayer(ModModelLayers.GIANT, GiantModel::getTexturedModelData);
29-
29+
3030
EntityRendererRegistry.register(ModEntities.BASS_FISH, BassFishRenderer::new);
3131
EntityModelLayerRegistry.registerModelLayer(ModModelLayers.BASS_FISH, BassFishModel::getTexturedModelData);
3232

3333
EntityRendererRegistry.register(ModEntities.AZURE_SERPENT, AzureSerpentRenderer::new);
3434
EntityModelLayerRegistry.registerModelLayer(ModModelLayers.AZURE_SERPENT, AzureSerpentModel::getTexturedModelData);
35-
35+
3636
// geo mobs
3737
EntityRendererRegistry.register(ModEntities.BARRACUDA, BarracudaRenderer::new);
3838
EntityRendererRegistry.register(ModEntities.AZUER_REAPER, AzureReaperRenderer::new);
3939

40-
BlockEntityRendererFactories.register(ModBlockEntityType.TELEPORTER, TeleporterBlockRenderer::new);
40+
RenderFluidHandler.register();
4141
}
4242
}

src/main/java/net/infugogr/barracuda/block/ModBlocks.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,21 @@
1111
import net.minecraft.block.AbstractBlock;
1212
import net.minecraft.block.Block;
1313
import net.minecraft.block.Blocks;
14+
import net.minecraft.block.FluidBlock;
1415
import net.minecraft.item.BlockItem;
1516
import net.minecraft.registry.Registries;
1617
import net.minecraft.registry.Registry;
1718
import net.minecraft.sound.BlockSoundGroup;
1819
import net.minecraft.util.Identifier;
1920

21+
22+
23+
import net.minecraft.item.Item;
24+
import net.minecraft.registry.RegistryKey;
25+
import net.minecraft.registry.RegistryKeys;
26+
27+
import java.util.function.Function;
28+
2029
public class ModBlocks {
2130

2231
// Crates
@@ -53,6 +62,8 @@ public class ModBlocks {
5362
new Block(FabricBlockSettings.copyOf(Blocks.IRON_BLOCK)));
5463
public static final Block FUEL_GENERATOR = registerWithItemCopy("fuel_generator",
5564
new FuelGeneratorBlock(FabricBlockSettings.copyOf(Blocks.IRON_BLOCK)));
65+
public static final Block OIL_REFINERY = registerWithItemCopy("oil_refinery",
66+
new OilRefineryBlock(FabricBlockSettings.copyOf(Blocks.IRON_BLOCK)));
5667
public static final Block LVCABLE = registerWithItemCopy("lv_cable",
5768
new LVcableBlock(FabricBlockSettings.copyOf(Blocks.IRON_BLOCK)));
5869
public static final Block SMES = registerWithItemCopy("smes",
@@ -74,6 +85,11 @@ private static Block registerWithItemCopy(String name, Block block) {
7485
return Registry.register(Registries.BLOCK, new Identifier(Barracuda.MOD_ID, name), block);
7586
}
7687

88+
public static FluidBlock registerFluidBlock(String name, FluidBlock block) {
89+
registerBlockItem(name, block);
90+
return Registry.register(Registries.BLOCK, new Identifier(Barracuda.MOD_ID, name), block);
91+
}
92+
7793
private static void registerBlockItem(String name, Block block) {
7894
Registry.register(Registries.ITEM, new Identifier(Barracuda.MOD_ID, name),
7995
new BlockItem(block, new FabricItemSettings()));
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package net.infugogr.barracuda.block;
2+
3+
import com.mojang.serialization.MapCodec;
4+
import net.infugogr.barracuda.block.entity.MachineFrameBlockEntity;
5+
import net.infugogr.barracuda.block.entity.ModBlockEntityType;
6+
import net.infugogr.barracuda.block.entity.OilRefineryBlockEntity;
7+
import net.infugogr.barracuda.fluid.ModFluids;
8+
import net.infugogr.barracuda.item.ModItems;
9+
import net.infugogr.barracuda.util.ModTags;
10+
import net.infugogr.barracuda.util.TickableBlockEntity;
11+
import net.minecraft.block.*;
12+
import net.minecraft.block.entity.BlockEntity;
13+
import net.minecraft.block.entity.BlockEntityTicker;
14+
import net.minecraft.block.entity.BlockEntityType;
15+
import net.minecraft.entity.player.PlayerEntity;
16+
import net.minecraft.item.ItemPlacementContext;
17+
import net.minecraft.item.ItemStack;
18+
import net.minecraft.screen.NamedScreenHandlerFactory;
19+
import net.minecraft.state.StateManager;
20+
import net.minecraft.state.property.DirectionProperty;
21+
import net.minecraft.state.property.Properties;
22+
import net.minecraft.util.ActionResult;
23+
import net.minecraft.util.Hand;
24+
import net.minecraft.util.hit.BlockHitResult;
25+
import net.minecraft.util.math.BlockPos;
26+
import net.minecraft.util.math.Direction;
27+
import net.minecraft.world.World;
28+
import org.jetbrains.annotations.Nullable;
29+
30+
public class OilRefineryBlock extends BlockWithEntity implements BlockEntityProvider{
31+
private static final MapCodec<OilRefineryBlock> CODEC = createCodec(OilRefineryBlock::new);
32+
public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING;
33+
protected OilRefineryBlock(Settings settings) {
34+
super(settings);
35+
setDefaultState(getDefaultState().with(FACING, Direction.NORTH));
36+
}
37+
38+
39+
40+
@Override
41+
protected MapCodec<? extends BlockWithEntity> getCodec() {
42+
return CODEC;
43+
}
44+
45+
@Override
46+
public BlockRenderType getRenderType(BlockState state) {
47+
return BlockRenderType.MODEL;
48+
}
49+
50+
@Override
51+
public @Nullable BlockEntity createBlockEntity(BlockPos pos, BlockState state) {
52+
return ModBlockEntityType.OIL_REFINERY.instantiate(pos, state);
53+
}
54+
55+
@Override
56+
public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) {
57+
NamedScreenHandlerFactory screenHandlerFactory = ((OilRefineryBlockEntity) world.getBlockEntity(pos));
58+
BlockEntity ent = world.getBlockEntity(pos);
59+
ItemStack stack = player.getStackInHand(hand);
60+
if (!world.isClient && ent instanceof OilRefineryBlockEntity blockEntity && stack.isIn(ModTags.FLUIDS)) {
61+
return blockEntity.setFluid(stack, player);
62+
} else if (!world.isClient && screenHandlerFactory != null) {
63+
player.openHandledScreen(screenHandlerFactory);
64+
return ActionResult.SUCCESS;
65+
} else {return ActionResult.CONSUME;}
66+
}
67+
68+
@Nullable
69+
@Override
70+
public BlockState getPlacementState(ItemPlacementContext ctx) {
71+
return getDefaultState().with(FACING, ctx.getHorizontalPlayerFacing().getOpposite());
72+
}
73+
74+
protected void appendProperties(StateManager.Builder<Block, BlockState> builder) {
75+
builder.add(FACING);
76+
}
77+
78+
@Nullable
79+
@Override
80+
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(World world, BlockState state, BlockEntityType<T> type) {
81+
return TickableBlockEntity.createTicker(world);
82+
}
83+
}

src/main/java/net/infugogr/barracuda/block/entity/FuelGeneratorBlockEntity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public void onTick() {
8383
if (this.world == null || this.world.isClient)
8484
return;
8585

86-
SimpleEnergyStorage energyStorage = (SimpleEnergyStorage) this.energyStorage.getStorage(null);
86+
SimpleEnergyStorage energyStorage = this.energyStorage.getStorage(null);
8787

8888
spread(this.world, this.pos, energyStorage);
8989

src/main/java/net/infugogr/barracuda/block/entity/ModBlockEntityType.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ public class ModBlockEntityType {
3535
BlockEntityType.Builder.create(TeleporterBlockEntity::new, ModBlocks.TELEPORTER)
3636
.build());
3737

38+
public static final BlockEntityType<OilRefineryBlockEntity> OIL_REFINERY = register("oil_refinery",
39+
BlockEntityType.Builder.create(OilRefineryBlockEntity::new, ModBlocks.OIL_REFINERY)
40+
.build());
41+
3842
public static final BlockEntityType<FishingNetBlockEntity> FISHING_NET =
3943
Registry.register(Registries.BLOCK_ENTITY_TYPE, new Identifier(Barracuda.MOD_ID, "fishing_net"),
4044
FabricBlockEntityTypeBuilder.create(FishingNetBlockEntity::new,

0 commit comments

Comments
 (0)