Skip to content

Commit f9b1440

Browse files
committed
Working changes
1 parent c787ae8 commit f9b1440

File tree

20 files changed

+97
-173
lines changed

20 files changed

+97
-173
lines changed

src/main/java/com/robotgryphon/compactmachines/block/tiles/CompactMachineTile.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import com.robotgryphon.compactmachines.data.machines.CompactMachinePlayerData;
88
import com.robotgryphon.compactmachines.data.machines.CompactMachineRegistrationData;
99
import com.robotgryphon.compactmachines.reference.Reference;
10-
import com.robotgryphon.compactmachines.api.tunnels.TunnelDefinition;
10+
import com.robotgryphon.compactmachines.tunnels.definitions.TunnelDefinition;
1111
import com.robotgryphon.compactmachines.tunnels.TunnelHelper;
1212
import com.robotgryphon.compactmachines.api.tunnels.ICapableTunnel;
1313
import net.minecraft.block.BlockState;

src/main/java/com/robotgryphon/compactmachines/block/tiles/TunnelWallTile.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import com.robotgryphon.compactmachines.network.NetworkHandler;
77
import com.robotgryphon.compactmachines.network.TunnelAddedPacket;
88
import com.robotgryphon.compactmachines.teleportation.DimensionalPosition;
9-
import com.robotgryphon.compactmachines.api.tunnels.TunnelDefinition;
9+
import com.robotgryphon.compactmachines.tunnels.definitions.TunnelDefinition;
1010
import com.robotgryphon.compactmachines.api.tunnels.ICapableTunnel;
1111
import com.robotgryphon.compactmachines.util.CompactMachineUtil;
1212
import net.minecraft.block.BlockState;

src/main/java/com/robotgryphon/compactmachines/block/walls/TunnelWallBlock.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55
import com.robotgryphon.compactmachines.compat.theoneprobe.IProbeDataProvider;
66
import com.robotgryphon.compactmachines.compat.theoneprobe.providers.TunnelProvider;
77
import com.robotgryphon.compactmachines.core.Registration;
8-
import com.robotgryphon.compactmachines.api.tunnels.TunnelDefinition;
8+
import com.robotgryphon.compactmachines.tunnels.definitions.TunnelDefinition;
99
import com.robotgryphon.compactmachines.tunnels.TunnelHelper;
1010
import com.robotgryphon.compactmachines.api.tunnels.IRedstoneTunnel;
1111
import net.minecraft.block.Block;
1212
import net.minecraft.block.BlockState;
1313
import net.minecraft.entity.item.ItemEntity;
1414
import net.minecraft.entity.player.PlayerEntity;
15-
import net.minecraft.item.Item;
1615
import net.minecraft.item.ItemStack;
16+
import net.minecraft.nbt.CompoundNBT;
1717
import net.minecraft.state.BooleanProperty;
1818
import net.minecraft.state.DirectionProperty;
1919
import net.minecraft.state.StateContainer;
@@ -116,8 +116,9 @@ public ActionResultType onBlockActivated(BlockState state, World worldIn, BlockP
116116
worldIn.setBlockState(pos, solidWall);
117117

118118
TunnelDefinition tunnelRegistration = tunnelDef.get();
119-
Item item = tunnelRegistration.getItem();
120-
ItemStack stack = new ItemStack(item, 1);
119+
ItemStack stack = new ItemStack(Registration.ITEM_TUNNEL.get(), 1);
120+
CompoundNBT defTag = stack.getOrCreateChildTag("definition");
121+
defTag.putString("id", tunnelRegistration.getRegistryName().toString());
121122

122123
ItemEntity ie = new ItemEntity(worldIn, player.getPosX(), player.getPosY(), player.getPosZ(), stack);
123124
worldIn.addEntity(ie);

src/main/java/com/robotgryphon/compactmachines/client/TunnelColors.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.robotgryphon.compactmachines.client;
22

33
import com.robotgryphon.compactmachines.block.tiles.TunnelWallTile;
4-
import com.robotgryphon.compactmachines.api.tunnels.TunnelDefinition;
4+
import com.robotgryphon.compactmachines.tunnels.definitions.TunnelDefinition;
55
import net.minecraft.block.BlockState;
66
import net.minecraft.client.renderer.color.IBlockColor;
77
import net.minecraft.tileentity.TileEntity;

src/main/java/com/robotgryphon/compactmachines/compat/theoneprobe/providers/TunnelProvider.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.robotgryphon.compactmachines.block.tiles.TunnelWallTile;
55
import com.robotgryphon.compactmachines.block.walls.TunnelWallBlock;
66
import com.robotgryphon.compactmachines.compat.theoneprobe.IProbeData;
7+
import com.robotgryphon.compactmachines.core.Registration;
78
import com.robotgryphon.compactmachines.teleportation.DimensionalPosition;
89
import com.robotgryphon.compactmachines.api.tunnels.EnumTunnelSide;
910
import com.robotgryphon.compactmachines.tunnels.TunnelHelper;
@@ -57,7 +58,7 @@ private static void addProbeInfo(ProbeMode probeMode, IProbeInfo info, PlayerEnt
5758

5859
CompoundText type = CompoundText.create().name(tunType);
5960
v.horizontal(center)
60-
.item(new ItemStack(def.getItem()))
61+
.item(new ItemStack(Registration.ITEM_TUNNEL.get()))
6162
.text(type);
6263
}
6364

src/main/java/com/robotgryphon/compactmachines/core/Registration.java

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.robotgryphon.compactmachines.core;
22

33
import com.robotgryphon.compactmachines.CompactMachines;
4+
import com.robotgryphon.compactmachines.tunnels.definitions.TunnelDefinition;
45
import com.robotgryphon.compactmachines.block.BlockCompactMachine;
56
import com.robotgryphon.compactmachines.block.tiles.CompactMachineTile;
67
import com.robotgryphon.compactmachines.block.tiles.TunnelWallTile;
@@ -10,11 +11,8 @@
1011
import com.robotgryphon.compactmachines.item.ItemBlockMachine;
1112
import com.robotgryphon.compactmachines.item.ItemBlockWall;
1213
import com.robotgryphon.compactmachines.item.ItemPersonalShrinkingDevice;
13-
import com.robotgryphon.compactmachines.item.tunnels.ItemTunnelItem;
14-
import com.robotgryphon.compactmachines.item.tunnels.RedstoneInTunnelItem;
15-
import com.robotgryphon.compactmachines.item.tunnels.RedstoneOutTunnelItem;
14+
import com.robotgryphon.compactmachines.item.TunnelItem;
1615
import com.robotgryphon.compactmachines.reference.EnumMachineSize;
17-
import com.robotgryphon.compactmachines.api.tunnels.TunnelDefinition;
1816
import com.robotgryphon.compactmachines.tunnels.definitions.ItemTunnelDefinition;
1917
import com.robotgryphon.compactmachines.tunnels.definitions.RedstoneTunnelDefinition;
2018
import net.minecraft.block.AbstractBlock;
@@ -49,7 +47,14 @@ public class Registration {
4947
private static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, MOD_ID);
5048
private static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MOD_ID);
5149
private static final DeferredRegister<TileEntityType<?>> TILES_ENTITIES = DeferredRegister.create(ForgeRegistries.TILE_ENTITIES, MOD_ID);
52-
public static final DeferredRegister<TunnelDefinition> TUNNEL_TYPES = DeferredRegister.create(TunnelDefinition.class, MOD_ID);
50+
public static final DeferredRegister<TunnelDefinition> TUNNEL_DEFINITIONS = DeferredRegister.create(TunnelDefinition.class, MOD_ID);
51+
52+
static {
53+
TUNNEL_DEFINITIONS.makeRegistry("tunnel_types",
54+
() -> new RegistryBuilder<TunnelDefinition>()
55+
.setType(TunnelDefinition.class)
56+
.tagFolder("tunnel_types"));
57+
}
5358

5459
// ================================================================================================================
5560
// PROPERTIES
@@ -151,14 +156,8 @@ public class Registration {
151156
// TUNNELS
152157
// ================================================================================================================
153158

154-
public static final RegistryObject<Item> ITEM_ITEM_TUNNEL = ITEMS.register("item_tunnel", () ->
155-
new ItemTunnelItem(BASIC_ITEM_PROPS.get()));
156-
157-
public static final RegistryObject<Item> ITEM_REDSTONEIN_TUNNEL = ITEMS.register("redstone_in_tunnel", () ->
158-
new RedstoneInTunnelItem(BASIC_ITEM_PROPS.get()));
159-
160-
public static final RegistryObject<Item> ITEM_REDSTONEOUT_TUNNEL = ITEMS.register("redstone_out_tunnel", () ->
161-
new RedstoneOutTunnelItem(BASIC_ITEM_PROPS.get()));
159+
public static final RegistryObject<Item> ITEM_TUNNEL = ITEMS.register("tunnel", () ->
160+
new TunnelItem(BASIC_ITEM_PROPS.get()));
162161

163162
public static final RegistryObject<TileEntityType<TunnelWallTile>> TUNNEL_WALL_TILE = TILES_ENTITIES.register("tunnel_wall", () ->
164163
TileEntityType.Builder.create(TunnelWallTile::new, BLOCK_TUNNEL_WALL.get())
@@ -167,17 +166,11 @@ public class Registration {
167166
// ================================================================================================================
168167
// TUNNEL TYPE DEFINITIONS
169168
// ================================================================================================================
170-
public static final RegistryObject<TunnelDefinition> ITEM_TUNNEL = TUNNEL_TYPES.register("items", () ->
171-
new ItemTunnelDefinition(ITEM_ITEM_TUNNEL.get())
172-
);
169+
public static final RegistryObject<TunnelDefinition> ITEM_TUNNEL_DEF = TUNNEL_DEFINITIONS.register("item", ItemTunnelDefinition::new);
173170

174-
public static final RegistryObject<TunnelDefinition> REDSTONE_IN_TUNNEL = TUNNEL_TYPES.register("redstone_in", () ->
175-
new RedstoneTunnelDefinition(ITEM_REDSTONEIN_TUNNEL.get())
176-
);
171+
public static final RegistryObject<TunnelDefinition> REDSTONE_IN_TUNNEL = TUNNEL_DEFINITIONS.register("redstone_in", RedstoneTunnelDefinition::new);
177172

178-
public static final RegistryObject<TunnelDefinition> REDSTONE_OUT_TUNNEL = TUNNEL_TYPES.register("redstone_out", () ->
179-
new RedstoneTunnelDefinition(ITEM_REDSTONEOUT_TUNNEL.get())
180-
);
173+
public static final RegistryObject<TunnelDefinition> REDSTONE_OUT_TUNNEL = TUNNEL_DEFINITIONS.register("redstone_out", RedstoneTunnelDefinition::new);
181174

182175
// ================================================================================================================
183176
// DIMENSION
@@ -194,9 +187,6 @@ public static void init() {
194187
ITEMS.register(eventBus);
195188
TILES_ENTITIES.register(eventBus);
196189

197-
TUNNEL_TYPES.makeRegistry("tunnel_types", () -> new RegistryBuilder<TunnelDefinition>()
198-
.tagFolder("tunnel_types"));
199-
200-
TUNNEL_TYPES.register(eventBus);
190+
TUNNEL_DEFINITIONS.register(eventBus);
201191
}
202192
}

src/main/java/com/robotgryphon/compactmachines/item/tunnels/TunnelItem.java renamed to src/main/java/com/robotgryphon/compactmachines/item/TunnelItem.java

Lines changed: 61 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,65 @@
1-
package com.robotgryphon.compactmachines.item.tunnels;
1+
package com.robotgryphon.compactmachines.item;
22

33
import com.robotgryphon.compactmachines.block.tiles.TunnelWallTile;
44
import com.robotgryphon.compactmachines.block.walls.TunnelWallBlock;
55
import com.robotgryphon.compactmachines.core.Registration;
6-
import com.robotgryphon.compactmachines.api.tunnels.TunnelDefinition;
6+
import com.robotgryphon.compactmachines.tunnels.definitions.TunnelDefinition;
77
import com.robotgryphon.compactmachines.api.tunnels.IRedstoneTunnel;
88
import net.minecraft.block.BlockState;
99
import net.minecraft.entity.player.PlayerEntity;
1010
import net.minecraft.entity.player.ServerPlayerEntity;
1111
import net.minecraft.item.Item;
12+
import net.minecraft.item.ItemGroup;
1213
import net.minecraft.item.ItemStack;
1314
import net.minecraft.item.ItemUseContext;
15+
import net.minecraft.nbt.CompoundNBT;
1416
import net.minecraft.server.MinecraftServer;
15-
import net.minecraft.util.ActionResult;
16-
import net.minecraft.util.ActionResultType;
17-
import net.minecraft.util.Hand;
17+
import net.minecraft.util.*;
1818
import net.minecraft.util.math.BlockPos;
1919
import net.minecraft.util.text.IFormattableTextComponent;
2020
import net.minecraft.util.text.StringTextComponent;
2121
import net.minecraft.util.text.TextFormatting;
2222
import net.minecraft.world.World;
2323
import net.minecraft.world.server.ServerWorld;
24+
import net.minecraftforge.fml.common.registry.GameRegistry;
25+
import net.minecraftforge.registries.IForgeRegistry;
2426

25-
public abstract class TunnelItem extends Item {
27+
import java.util.Optional;
28+
29+
public class TunnelItem extends Item {
2630
public TunnelItem(Properties properties) {
2731
super(properties);
2832
}
2933

30-
public abstract TunnelDefinition getDefinition();
34+
@Override
35+
public void fillItemGroup(ItemGroup group, NonNullList<ItemStack> items) {
36+
super.fillItemGroup(group, items);
37+
38+
if(this.isInGroup(group)) {
39+
IForgeRegistry<TunnelDefinition> definitions = GameRegistry.findRegistry(TunnelDefinition.class);
40+
definitions.getValues().forEach(def -> {
41+
ItemStack withDef = new ItemStack(this, 1);
42+
CompoundNBT defTag = withDef.getOrCreateChildTag("definition");
43+
defTag.putString("id", def.getRegistryName().toString());
44+
45+
items.add(withDef);
46+
});
47+
}
48+
}
49+
50+
public Optional<TunnelDefinition> getDefinition(ItemStack stack) {
51+
CompoundNBT defTag = stack.getOrCreateChildTag("definition");
52+
if(defTag.isEmpty() || !defTag.contains("id"))
53+
return Optional.empty();
54+
55+
ResourceLocation defId = new ResourceLocation(defTag.getString("id"));
56+
IForgeRegistry<TunnelDefinition> tunnelReg = GameRegistry.findRegistry(TunnelDefinition.class);
57+
58+
if(!tunnelReg.containsKey(defId))
59+
return Optional.empty();
60+
61+
return Optional.ofNullable(tunnelReg.getValue(defId));
62+
}
3163

3264
@Override
3365
public ActionResultType onItemUse(ItemUseContext context) {
@@ -46,25 +78,28 @@ public ActionResultType onItemUse(ItemUseContext context) {
4678
Item i = is.getItem();
4779

4880
TunnelItem ti = ((TunnelItem) i);
49-
TunnelDefinition definition = ti.getDefinition();
50-
51-
BlockState tunnelState = Registration.BLOCK_TUNNEL_WALL.get()
52-
.getDefaultState()
53-
.with(TunnelWallBlock.TUNNEL_SIDE, context.getFace());
54-
55-
// Redstone Support
56-
boolean redstone = (definition instanceof IRedstoneTunnel);
57-
tunnelState = tunnelState.with(TunnelWallBlock.REDSTONE, redstone);
58-
w.setBlockState(pos, tunnelState, 3);
59-
60-
// Get the server and add a deferred task - allows the tile to be created on the client first
61-
MinecraftServer server = ((ServerWorld) context.getWorld()).getServer();
62-
server.deferTask(() -> {
63-
TunnelWallTile tile = (TunnelWallTile) context.getWorld().getTileEntity(context.getPos());
64-
tile.setTunnelType(definition.getRegistryName());
81+
Optional<TunnelDefinition> definition = ti.getDefinition(context.getItem());
82+
83+
definition.ifPresent(def -> {
84+
BlockState tunnelState = Registration.BLOCK_TUNNEL_WALL.get()
85+
.getDefaultState()
86+
.with(TunnelWallBlock.TUNNEL_SIDE, context.getFace());
87+
88+
// Redstone Support
89+
boolean redstone = (def instanceof IRedstoneTunnel);
90+
tunnelState = tunnelState.with(TunnelWallBlock.REDSTONE, redstone);
91+
w.setBlockState(pos, tunnelState, 3);
92+
93+
// Get the server and add a deferred task - allows the tile to be created on the client first
94+
MinecraftServer server = ((ServerWorld) context.getWorld()).getServer();
95+
server.deferTask(() -> {
96+
TunnelWallTile tile = (TunnelWallTile) context.getWorld().getTileEntity(context.getPos());
97+
tile.setTunnelType(def.getRegistryName());
98+
});
99+
100+
is.shrink(1);
65101
});
66102

67-
is.shrink(1);
68103
return ActionResultType.CONSUME;
69104
}
70105

@@ -98,4 +133,6 @@ protected ActionResult<ItemStack> swapTunnelType(Item type, PlayerEntity player,
98133

99134
return ActionResult.resultPass(player.getHeldItem(hand));
100135
}
136+
137+
101138
}

src/main/java/com/robotgryphon/compactmachines/item/tunnels/ItemTunnelItem.java

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/main/java/com/robotgryphon/compactmachines/item/tunnels/RedstoneInTunnelItem.java

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/main/java/com/robotgryphon/compactmachines/item/tunnels/RedstoneOutTunnelItem.java

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)