Skip to content

Commit 5b1bd23

Browse files
committed
Converted Eternal Fabric into a proper fluid block
1 parent 2118ba3 commit 5b1bd23

File tree

16 files changed

+92
-25
lines changed

16 files changed

+92
-25
lines changed

src/main/java/org/dimdev/dimdoors/DimDoors.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import net.minecraft.util.text.TextComponentTranslation;
88
import net.minecraft.world.storage.loot.LootTableList;
99
import net.minecraftforge.common.MinecraftForge;
10+
import net.minecraftforge.fluids.FluidRegistry;
1011
import net.minecraftforge.fml.common.Mod;
1112
import net.minecraftforge.fml.common.SidedProxy;
1213
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
@@ -53,7 +54,7 @@ public class DimDoors {
5354
public static Logger log;
5455

5556
@SidedProxy(clientSide = "org.dimdev.dimdoors.proxy.ClientProxy",
56-
serverSide = "org.dimdev.dimdoors.proxy.ServerProxy")
57+
serverSide = "org.dimdev.dimdoors.proxy.CommonProxy")
5758
public static IProxy proxy;
5859

5960
@Getter public static File configurationFolder;
@@ -144,4 +145,8 @@ public static void sendTranslatedMessage(Entity entity, String text, Object... t
144145
public static void chat(Entity entity, String text, Object... translationArgs) {
145146
entity.sendMessage(new TextComponentTranslation(text, translationArgs));
146147
}
148+
149+
static {
150+
FluidRegistry.enableUniversalBucket();
151+
}
147152
}

src/main/java/org/dimdev/dimdoors/client/ModelManager.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,30 @@
11
package org.dimdev.dimdoors.client;
22

33
import net.minecraft.block.BlockDoor;
4+
import net.minecraft.block.state.IBlockState;
45
import net.minecraft.client.Minecraft;
6+
import net.minecraft.client.renderer.ItemMeshDefinition;
57
import net.minecraft.client.renderer.block.model.ModelBakery;
68
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
79
import net.minecraft.client.renderer.block.statemap.StateMap;
10+
import net.minecraft.client.renderer.block.statemap.StateMapperBase;
811
import net.minecraft.item.EnumDyeColor;
912
import net.minecraft.item.Item;
13+
import net.minecraft.item.ItemBlock;
14+
import net.minecraft.item.ItemStack;
1015
import net.minecraft.util.ResourceLocation;
1116
import net.minecraftforge.client.event.ModelRegistryEvent;
1217
import net.minecraftforge.client.model.ModelLoader;
1318
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
1419
import net.minecraftforge.fml.relauncher.Side;
1520
import net.minecraftforge.fml.relauncher.SideOnly;
21+
import org.dimdev.dimdoors.shared.blocks.BlockFabricEternal;
1622
import org.dimdev.dimdoors.shared.blocks.ModBlocks;
23+
import org.dimdev.dimdoors.shared.fluids.FluidLiquid;
1724
import org.dimdev.dimdoors.shared.items.ModItems;
1825

26+
import static org.dimdev.dimdoors.shared.blocks.ModBlocks.ETERNAL_FABRIC;
27+
1928
@SideOnly(Side.CLIENT)
2029
public final class ModelManager {
2130

@@ -25,7 +34,6 @@ public static void registerItemModels() {
2534
registerColored(ModItems.FABRIC);
2635
registerColored(ModItems.ANCIENT_FABRIC);
2736
register(ModItems.UNRAVELLED_FABRIC);
28-
register(ModItems.ETERNAL_FABRIC);
2937
register(ModItems.WOOD_DIMENSIONAL_TRAPDOOR);
3038
register(ModItems.IRON_DIMENSIONAL_DOOR);
3139
register(ModItems.GOLD_DIMENSIONAL_DOOR);
@@ -65,6 +73,16 @@ public static void registerModels(ModelRegistryEvent event) {
6573
ModelLoader.setCustomStateMapper(ModBlocks.PERSONAL_DIMENSIONAL_DOOR, ignorePowered);
6674
ModelLoader.setCustomStateMapper(ModBlocks.WARP_DIMENSIONAL_DOOR, ignorePowered);
6775

76+
ModelLoader.setCustomStateMapper(ETERNAL_FABRIC, new StateMapperBase() {
77+
@Override
78+
protected ModelResourceLocation getModelResourceLocation(IBlockState state) {
79+
return new ModelResourceLocation("dimdoors:eternal_fabric", "fluid");
80+
}
81+
});
82+
83+
ModelLoader.setCustomMeshDefinition(ItemBlock.getItemFromBlock(ETERNAL_FABRIC), stack -> new ModelResourceLocation("dimdoors:eternal_fabric", "fluid"));
84+
85+
6886
ModelLoader.setCustomStateMapper(ModBlocks.DIMENSIONAL_PORTAL, new StateMap.Builder().ignore(BlockDoor.FACING, BlockDoor.HALF, BlockDoor.HINGE, BlockDoor.OPEN, BlockDoor.POWERED).build());
6987
}
7088

src/main/java/org/dimdev/dimdoors/proxy/ClientProxy.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,11 @@
2020
import org.dimdev.dimdoors.shared.tileentities.TileEntityFloatingRift;
2121

2222
@SideOnly(Side.CLIENT)
23-
public class ClientProxy implements IProxy {
23+
public class ClientProxy extends CommonProxy {
2424

2525
@Override
2626
public void onPreInitialization(FMLPreInitializationEvent event) {
27+
super.onPreInitialization(event);
2728
// Register client-side event handlers
2829
MinecraftForge.EVENT_BUS.register(ModelManager.class);
2930

src/main/java/org/dimdev/dimdoors/proxy/ServerProxy.java renamed to src/main/java/org/dimdev/dimdoors/proxy/CommonProxy.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,14 @@
55
import net.minecraft.entity.player.EntityPlayer;
66
import net.minecraft.world.WorldProvider;
77
import net.minecraftforge.client.IRenderHandler;
8+
import org.dimdev.dimdoors.shared.fluids.ModFluids;
89

9-
public class ServerProxy implements IProxy {
10+
public class CommonProxy implements IProxy {
1011

1112
@Override
12-
public void onPreInitialization(FMLPreInitializationEvent event) {}
13+
public void onPreInitialization(FMLPreInitializationEvent event) {
14+
ModFluids.registerFluids();
15+
}
1316

1417
@Override
1518
public void onInitialization(FMLInitializationEvent event) {}

src/main/java/org/dimdev/dimdoors/shared/blocks/BlockFabricEternal.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,20 @@
88
import net.minecraft.util.ResourceLocation;
99
import net.minecraft.util.math.BlockPos;
1010
import net.minecraft.world.World;
11+
import net.minecraftforge.fluids.BlockFluidClassic;
1112
import org.dimdev.dimdoors.DimDoors;
13+
import org.dimdev.dimdoors.shared.fluids.ModFluids;
1214
import org.dimdev.dimdoors.shared.items.ModCreativeTabs;
1315
import org.dimdev.dimdoors.shared.rifts.targets.EscapeTarget;
1416

15-
public class BlockFabricEternal extends BlockEmptyDrops { // TODO: make this a glowing red liquid
17+
public class BlockFabricEternal extends BlockFluidClassic { // TODO: make this a glowing red liquid
1618

1719
public static final Material ETERNAL_FABRIC = new Material(MapColor.PINK);
1820
public static final String ID = "eternal_fabric";
1921
public static EscapeTarget exitLimbo = new EscapeTarget(true);
2022

2123
public BlockFabricEternal() {
22-
super(ETERNAL_FABRIC);
24+
super(ModFluids.ETERNAL_FABRIC, ETERNAL_FABRIC);
2325
setRegistryName(new ResourceLocation(DimDoors.MODID, ID));
2426
setTranslationKey(ID);
2527
setCreativeTab(ModCreativeTabs.DIMENSIONAL_DOORS_CREATIVE_TAB);
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.dimdev.dimdoors.shared.fluids;
2+
3+
import net.minecraft.util.ResourceLocation;
4+
import net.minecraftforge.fluids.Fluid;
5+
6+
public class FluidLiquid extends Fluid {
7+
public FluidLiquid(String fluidName) {
8+
super(fluidName, new ResourceLocation(String.format("dimdoors:blocks/%s_still", fluidName)), new ResourceLocation(String.format("dimdoors:blocks/%s_flow", fluidName)));
9+
this.setUnlocalizedName(fluidName);
10+
}
11+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.dimdev.dimdoors.shared.fluids;
2+
3+
import net.minecraftforge.fluids.Fluid;
4+
import net.minecraftforge.fluids.FluidRegistry;
5+
import org.dimdev.dimdoors.shared.blocks.BlockFabricEternal;
6+
7+
public class ModFluids {
8+
public static final Fluid ETERNAL_FABRIC = new FluidLiquid(BlockFabricEternal.ID);
9+
10+
public static void registerFluids() {
11+
registerFluid(ETERNAL_FABRIC);
12+
}
13+
14+
public static void registerFluid(Fluid fluid)
15+
{
16+
FluidRegistry.registerFluid(fluid);
17+
FluidRegistry.addBucketForFluid(fluid);
18+
}
19+
}

src/main/java/org/dimdev/dimdoors/shared/items/ModItems.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ public final class ModItems {
5050
public static final ItemColored FABRIC = (ItemColored) new ItemColored(ModBlocks.FABRIC, true).setSubtypeNames(new String[]{"white", "orange", "magenta", "lightBlue", "yellow", "lime", "pink", "gray", "silver", "cyan", "purple", "blue", "brown", "green", "red", "black"}).setRegistryName(ModBlocks.FABRIC.getRegistryName());
5151
public static final ItemColored ANCIENT_FABRIC = (ItemColored) new ItemColored(ModBlocks.ANCIENT_FABRIC, true).setSubtypeNames(new String[]{"white", "orange", "magenta", "lightBlue", "yellow", "lime", "pink", "gray", "silver", "cyan", "purple", "blue", "brown", "green", "red", "black"}).setRegistryName(ModBlocks.ANCIENT_FABRIC.getRegistryName());
5252
public static final ItemBlock UNRAVELLED_FABRIC = (ItemBlock) new ItemBlock(ModBlocks.UNRAVELLED_FABRIC).setRegistryName(ModBlocks.UNRAVELLED_FABRIC.getRegistryName());
53-
public static final ItemBlock ETERNAL_FABRIC = (ItemBlock) new ItemBlock(ModBlocks.ETERNAL_FABRIC).setRegistryName(ModBlocks.ETERNAL_FABRIC.getRegistryName());
5453
public static final ItemDimensionalTrapdoorWood WOOD_DIMENSIONAL_TRAPDOOR = new ItemDimensionalTrapdoorWood();
5554
public static final ItemBlock MARKING_PLATE = (ItemBlock) new ItemBlock(ModBlocks.MARKING_PLATE).setRegistryName(ModBlocks.MARKING_PLATE.getRegistryName());
5655

@@ -82,7 +81,6 @@ public static void registerItems(RegistryEvent.Register<Item> event) {
8281
FABRIC,
8382
ANCIENT_FABRIC,
8483
UNRAVELLED_FABRIC,
85-
ETERNAL_FABRIC,
8684
WOOD_DIMENSIONAL_TRAPDOOR,
8785
CREEPY_RECORD,
8886
MARKING_PLATE);

src/main/java/org/dimdev/dimdoors/shared/tools/Initializer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import net.minecraftforge.registries.GameData;
1212
import net.minecraftforge.registries.RegistryManager;
1313
import org.dimdev.dimdoors.DimDoors;
14-
import org.dimdev.dimdoors.proxy.ServerProxy;
14+
import org.dimdev.dimdoors.proxy.CommonProxy;
1515
import org.dimdev.dimdoors.shared.blocks.ModBlocks;
1616

1717
public final class Initializer {
@@ -25,7 +25,7 @@ public static void initialize() {
2525
Loader.instance().setActiveModContainer(mc);
2626

2727
DimDoors.instance = new DimDoors();
28-
DimDoors.proxy = new ServerProxy();
28+
DimDoors.proxy = new CommonProxy();
2929

3030
DimDoors.instance.onPreInitialization(new FMLPreInitializationEvent());
3131
ModBlocks.registerBlocks(new RegistryEvent.Register<Block>(GameData.BLOCKS, RegistryManager.ACTIVE.getRegistry(GameData.BLOCKS)));

src/main/java/org/dimdev/dimdoors/shared/world/limbo/LimboDecay.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public static Block[] getBlocksImmuneToDecay() {
7070
public static void applySpreadDecay(World world, BlockPos pos) {
7171
//Check if we randomly apply decay spread or not. This can be used to moderate the frequency of
7272
//full spread decay checks, which can also shift its performance impact on the game.
73-
if (random.nextInt(MAX_DECAY_SPREAD_CHANCE) < DECAY_SPREAD_CHANCE) {
73+
//if (random.nextInt(MAX_DECAY_SPREAD_CHANCE) < DECAY_SPREAD_CHANCE) {
7474
//Apply decay to the blocks above, below, and on all four sides.
7575
//World.getBlockId() implements bounds checking, so we don't have to worry about reaching out of the world
7676
decayBlock(world, pos.up());
@@ -79,7 +79,7 @@ public static void applySpreadDecay(World world, BlockPos pos) {
7979
decayBlock(world, pos.south());
8080
decayBlock(world, pos.west());
8181
decayBlock(world, pos.east());
82-
}
82+
//}
8383
}
8484

8585
/**
@@ -136,17 +136,11 @@ private static boolean decayBlock(World world, BlockPos pos) {
136136
if (canDecayBlock(block, world, pos)) {
137137
//Loop over the block IDs that decay can go through.
138138
//Find an index matching the current blockID, if any.
139-
if (block.isNormalCube()) {
140-
if(getDecaySequence().containsKey(block)) {
141-
IBlockState decay = getDecaySequence().get(block);
142139

143-
144-
System.out.println(I18n.format(block.getBlock().getTranslationKey()) + " -> " + I18n.format(decay.getBlock().getTranslationKey()));
145-
world.setBlockState(pos, decay);
146-
} else {
147-
return false;
148-
}
149-
} else {
140+
if(getDecaySequence().containsKey(block)) {
141+
IBlockState decay = getDecaySequence().get(block);
142+
world.setBlockState(pos, decay);
143+
} else if (!block.isNormalCube()) {
150144
world.setBlockState(pos, AIR.getDefaultState());
151145
}
152146
return true;
@@ -207,6 +201,9 @@ private static boolean canDecayBlock(IBlockState state, World world, BlockPos po
207201
stateConsumer.accept(
208202
STONE.getDefaultState().withProperty(BlockStone.VARIANT, BlockStone.EnumType.ANDESITE_SMOOTH),
209203
STONE.getDefaultState().withProperty(BlockStone.VARIANT, BlockStone.EnumType.ANDESITE));
204+
stateConsumer.accept(
205+
STONE.getDefaultState().withProperty(BlockStone.VARIANT, BlockStone.EnumType.ANDESITE),
206+
STONE.getDefaultState().withProperty(BlockStone.VARIANT, BlockStone.EnumType.DIORITE));
210207
stateConsumer.accept(
211208
STONE.getDefaultState().withProperty(BlockStone.VARIANT, BlockStone.EnumType.DIORITE_SMOOTH),
212209
STONE.getDefaultState().withProperty(BlockStone.VARIANT, BlockStone.EnumType.DIORITE));
@@ -235,6 +232,7 @@ private static boolean canDecayBlock(IBlockState state, World world, BlockPos po
235232
STONEBRICK.getDefaultState(),
236233
COBBLESTONE.getDefaultState());
237234
blockConsumer.accept(REDSTONE_BLOCK, REDSTONE_ORE);
235+
blockConsumer.accept(LIT_REDSTONE_ORE, STONE);
238236
blockConsumer.accept(REDSTONE_ORE, STONE);
239237
blockConsumer.accept(EMERALD_BLOCK, EMERALD_ORE);
240238
blockConsumer.accept(EMERALD_ORE, STONE);

0 commit comments

Comments
 (0)