Skip to content

Commit 5575667

Browse files
authored
Merge pull request #51 from Xaidee/feature/block-entity-lead-door
2 parents f3aa011 + 6c060b3 commit 5575667

37 files changed

+309
-116
lines changed

src/generated/resources/.cache/002701d48eee4c36b62b24b011e74b0624793d05

+13-13
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// 1.20.1 2024-09-10T14:28:17.9625293 oreganized Block States
1+
// 1.20.1 2024-09-11T16:17:06.6440035 oreganized Block States
22
d85b0fb9e5cad1d9c4f22ed192b0fa621ee3373c assets/oreganized/blockstates/black_crystal_glass.json
33
05bb006ff7f48557fe5c5333bc120f7206052717 assets/oreganized/blockstates/black_crystal_glass_pane.json
44
5e5002e9c77ee7221425eeacce8834af484db877 assets/oreganized/blockstates/blue_crystal_glass.json
@@ -218,13 +218,13 @@ eb736a40471fcd231ce12c1c955fee39ce7db3ef assets/oreganized/models/block/goopy_le
218218
581f0c65a273d4b16d5a696c249a900cff7775ca assets/oreganized/models/block/goopy_lead_bricks.json
219219
a54be9d65eda1e43cd4bfd27eaab530f40637c75 assets/oreganized/models/block/goopy_lead_bulb.json
220220
3ef5a41187f81462deb02c9b3be0560e229f0658 assets/oreganized/models/block/goopy_lead_door_bottom_left.json
221-
0f1acdd379a6591dea4d516f90cb3b021e9432fd assets/oreganized/models/block/goopy_lead_door_bottom_left_open.json
221+
24dc8aae0b84ed2a7b83709bf32fe8daa02501e3 assets/oreganized/models/block/goopy_lead_door_bottom_left_open.json
222222
645ac4e18f99ee425ee54e81ea907fc389317fb0 assets/oreganized/models/block/goopy_lead_door_bottom_right.json
223-
441b5e78d22ee097e362819638b3695d8f9503d8 assets/oreganized/models/block/goopy_lead_door_bottom_right_open.json
223+
a7129d11480bda18172408b5e2e6fede1603d473 assets/oreganized/models/block/goopy_lead_door_bottom_right_open.json
224224
d0d41977f3533864f9022c444888ac7cc512c410 assets/oreganized/models/block/goopy_lead_door_top_left.json
225-
cee209d2e04c5726273c3fe439299d0312f18f35 assets/oreganized/models/block/goopy_lead_door_top_left_open.json
225+
260960130854eb79089a484619de8671ba0a1743 assets/oreganized/models/block/goopy_lead_door_top_left_open.json
226226
9e576a3e34c597f130dbfc73ea277135838aa1d9 assets/oreganized/models/block/goopy_lead_door_top_right.json
227-
90b037d4f5d327ac85adae97bcf9ea844ed191a7 assets/oreganized/models/block/goopy_lead_door_top_right_open.json
227+
613227af844a6749c9f60a39c6e459b843b4f2ee assets/oreganized/models/block/goopy_lead_door_top_right_open.json
228228
6b54070af3244091a12a857e881b735bdd8a4ea8 assets/oreganized/models/block/goopy_lead_pillar.json
229229
ef326609bd98c61e74dd32823a5a263cc7397f53 assets/oreganized/models/block/goopy_lead_trapdoor_bottom.json
230230
2809d897af406d87c14696867ae3f468e2cd1311 assets/oreganized/models/block/goopy_lead_trapdoor_open.json
@@ -293,13 +293,13 @@ c817f48d9b0b502e26c7d4f44f76f9a260c846e4 assets/oreganized/models/block/lead_bar
293293
fb1ee9f9c979aabda19fcc48ec167ba711d35ae2 assets/oreganized/models/block/lead_bricks.json
294294
b93ab0c45a40dc3a5a25a6ccde6e8eb2471e0084 assets/oreganized/models/block/lead_bulb.json
295295
19d826c306b5753a7c9d5539e5ac76c75dcebec9 assets/oreganized/models/block/lead_door_bottom_left.json
296-
e35105d4de1c64bdd9e13e7fff57be7edece258e assets/oreganized/models/block/lead_door_bottom_left_open.json
296+
90047d804c7346b2246f8f87a22328816ed77156 assets/oreganized/models/block/lead_door_bottom_left_open.json
297297
e0cb3ee1fd12c5bd73b3e37123313fc80cfe750b assets/oreganized/models/block/lead_door_bottom_right.json
298-
2c615cd5ba923aea7400c21e059f3616e54941a8 assets/oreganized/models/block/lead_door_bottom_right_open.json
298+
a3b5fb9f197b9d401d6863366d6d3d657eae521d assets/oreganized/models/block/lead_door_bottom_right_open.json
299299
294fa31777669bcd393605136f68653d2032f4d9 assets/oreganized/models/block/lead_door_top_left.json
300-
bb46bf47651b0d7540f4a43a43a22b23a624ef2b assets/oreganized/models/block/lead_door_top_left_open.json
300+
be51e111a7b4e942be7c88cdca28f2b4a24e8fbe assets/oreganized/models/block/lead_door_top_left_open.json
301301
969a6d9a5236354a465a19902da2484641ad13f9 assets/oreganized/models/block/lead_door_top_right.json
302-
b6c2127a8585836a76905ca3a72c8bd078a02a50 assets/oreganized/models/block/lead_door_top_right_open.json
302+
d3a87e54d03e4fdcd043dff4c64b8c816fb64c8e assets/oreganized/models/block/lead_door_top_right_open.json
303303
638234cafeea24173c4c595e3f6b5f0eead7f3f9 assets/oreganized/models/block/lead_ore.json
304304
48d0cda98b8a321498318830f37f31f5b1e37256 assets/oreganized/models/block/lead_pillar.json
305305
2035fbf628e2e29273c51b129b86d3d5a7420a02 assets/oreganized/models/block/lead_trapdoor_bottom.json
@@ -525,13 +525,13 @@ e7902f26b6dae9da5d5b503af270dfebb38f4701 assets/oreganized/models/block/red_hot_
525525
aa503c4926d1de2115155c6373559430025f3879 assets/oreganized/models/block/red_hot_lead_bars_side.json
526526
6bcdcd41988a7cc5ebd7273f5bd7accef9eaef04 assets/oreganized/models/block/red_hot_lead_bars_side_alt.json
527527
6981808121cac6c55a84203a9c8e3ab5a50083fc assets/oreganized/models/block/red_hot_lead_door_bottom_left.json
528-
16d40ca4a06924e3e4beafee1e9c16d9667afa80 assets/oreganized/models/block/red_hot_lead_door_bottom_left_open.json
528+
6981808121cac6c55a84203a9c8e3ab5a50083fc assets/oreganized/models/block/red_hot_lead_door_bottom_left_open.json
529529
d606f62302a9656482f8076d3592122a95ebda2a assets/oreganized/models/block/red_hot_lead_door_bottom_right.json
530-
4f556eae6757ea29198f33d722286aa559827fec assets/oreganized/models/block/red_hot_lead_door_bottom_right_open.json
530+
d606f62302a9656482f8076d3592122a95ebda2a assets/oreganized/models/block/red_hot_lead_door_bottom_right_open.json
531531
288adc1c97cd701ce45867813f7a23272b164c02 assets/oreganized/models/block/red_hot_lead_door_top_left.json
532-
849fcabcf33bb1f3d052ec51740cab54a3497652 assets/oreganized/models/block/red_hot_lead_door_top_left_open.json
532+
288adc1c97cd701ce45867813f7a23272b164c02 assets/oreganized/models/block/red_hot_lead_door_top_left_open.json
533533
9aefc0424c65cfd5a4394bff34e2d3ed9556debe assets/oreganized/models/block/red_hot_lead_door_top_right.json
534-
61ea4d270626f3599b9de0ffb79333d86e5f0129 assets/oreganized/models/block/red_hot_lead_door_top_right_open.json
534+
9aefc0424c65cfd5a4394bff34e2d3ed9556debe assets/oreganized/models/block/red_hot_lead_door_top_right_open.json
535535
5924b1619aa47b9770b9c20e703eb8d120906ca8 assets/oreganized/models/block/red_hot_lead_trapdoor_bottom.json
536536
6056202082cd609584dd6fd4571c8e4b615988a5 assets/oreganized/models/block/red_hot_lead_trapdoor_open.json
537537
1974b68a782c0fcbe8b00eaf5c913341456bcfc3 assets/oreganized/models/block/red_hot_lead_trapdoor_top.json
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
2-
"parent": "minecraft:block/door_bottom_left_open",
2+
"parent": "minecraft:block/door_bottom_left",
33
"textures": {
4-
"bottom": "oreganized:block/goopy_lead_door_bottom",
5-
"top": "oreganized:block/goopy_lead_door_top"
4+
"bottom": "oreganized:block/goopy_lead_door_bottom_open",
5+
"top": "oreganized:block/goopy_lead_door_top_open"
66
}
77
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
2-
"parent": "minecraft:block/door_bottom_right_open",
2+
"parent": "minecraft:block/door_bottom_right",
33
"textures": {
4-
"bottom": "oreganized:block/goopy_lead_door_bottom",
5-
"top": "oreganized:block/goopy_lead_door_top"
4+
"bottom": "oreganized:block/goopy_lead_door_bottom_open",
5+
"top": "oreganized:block/goopy_lead_door_top_open"
66
}
77
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
2-
"parent": "minecraft:block/door_top_left_open",
2+
"parent": "minecraft:block/door_top_left",
33
"textures": {
4-
"bottom": "oreganized:block/goopy_lead_door_bottom",
5-
"top": "oreganized:block/goopy_lead_door_top"
4+
"bottom": "oreganized:block/goopy_lead_door_bottom_open",
5+
"top": "oreganized:block/goopy_lead_door_top_open"
66
}
77
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
2-
"parent": "minecraft:block/door_top_right_open",
2+
"parent": "minecraft:block/door_top_right",
33
"textures": {
4-
"bottom": "oreganized:block/goopy_lead_door_bottom",
5-
"top": "oreganized:block/goopy_lead_door_top"
4+
"bottom": "oreganized:block/goopy_lead_door_bottom_open",
5+
"top": "oreganized:block/goopy_lead_door_top_open"
66
}
77
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
2-
"parent": "minecraft:block/door_bottom_left_open",
2+
"parent": "minecraft:block/door_bottom_left",
33
"textures": {
4-
"bottom": "oreganized:block/lead_door_bottom",
5-
"top": "oreganized:block/lead_door_top"
4+
"bottom": "oreganized:block/lead_door_bottom_open",
5+
"top": "oreganized:block/lead_door_top_open"
66
}
77
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
2-
"parent": "minecraft:block/door_bottom_right_open",
2+
"parent": "minecraft:block/door_bottom_right",
33
"textures": {
4-
"bottom": "oreganized:block/lead_door_bottom",
5-
"top": "oreganized:block/lead_door_top"
4+
"bottom": "oreganized:block/lead_door_bottom_open",
5+
"top": "oreganized:block/lead_door_top_open"
66
}
77
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
2-
"parent": "minecraft:block/door_top_left_open",
2+
"parent": "minecraft:block/door_top_left",
33
"textures": {
4-
"bottom": "oreganized:block/lead_door_bottom",
5-
"top": "oreganized:block/lead_door_top"
4+
"bottom": "oreganized:block/lead_door_bottom_open",
5+
"top": "oreganized:block/lead_door_top_open"
66
}
77
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
2-
"parent": "minecraft:block/door_top_right_open",
2+
"parent": "minecraft:block/door_top_right",
33
"textures": {
4-
"bottom": "oreganized:block/lead_door_bottom",
5-
"top": "oreganized:block/lead_door_top"
4+
"bottom": "oreganized:block/lead_door_bottom_open",
5+
"top": "oreganized:block/lead_door_top_open"
66
}
77
}

src/generated/resources/assets/oreganized/models/block/red_hot_lead_door_bottom_left_open.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"parent": "minecraft:block/door_bottom_left_open",
2+
"parent": "minecraft:block/door_bottom_left",
33
"textures": {
44
"bottom": "oreganized:block/red_hot_lead",
55
"top": "oreganized:block/red_hot_lead"

src/generated/resources/assets/oreganized/models/block/red_hot_lead_door_bottom_right_open.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"parent": "minecraft:block/door_bottom_right_open",
2+
"parent": "minecraft:block/door_bottom_right",
33
"textures": {
44
"bottom": "oreganized:block/red_hot_lead",
55
"top": "oreganized:block/red_hot_lead"

src/generated/resources/assets/oreganized/models/block/red_hot_lead_door_top_left_open.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"parent": "minecraft:block/door_top_left_open",
2+
"parent": "minecraft:block/door_top_left",
33
"textures": {
44
"bottom": "oreganized:block/red_hot_lead",
55
"top": "oreganized:block/red_hot_lead"

src/generated/resources/assets/oreganized/models/block/red_hot_lead_door_top_right_open.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"parent": "minecraft:block/door_top_right_open",
2+
"parent": "minecraft:block/door_top_right",
33
"textures": {
44
"bottom": "oreganized:block/red_hot_lead",
55
"top": "oreganized:block/red_hot_lead"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
package galena.oreganized.content.block;
2+
3+
import galena.oreganized.index.OBlockEntities;
4+
import galena.oreganized.index.OBlocks;
5+
import galena.oreganized.index.ODamageSources;
6+
import galena.oreganized.world.IDoorProgressHolder;
7+
import net.minecraft.core.BlockPos;
8+
import net.minecraft.world.InteractionResult;
9+
import net.minecraft.world.entity.player.Player;
10+
import net.minecraft.world.level.Level;
11+
import net.minecraft.world.level.LevelAccessor;
12+
import net.minecraft.world.level.block.entity.BlockEntity;
13+
import net.minecraft.world.level.block.entity.BlockEntityTicker;
14+
import net.minecraft.world.level.block.entity.BlockEntityType;
15+
import net.minecraft.world.level.block.state.BlockState;
16+
import net.minecraft.world.level.block.state.properties.BlockSetType;
17+
import net.minecraft.world.level.gameevent.GameEvent;
18+
import org.jetbrains.annotations.Nullable;
19+
20+
import java.util.Optional;
21+
22+
import static galena.oreganized.content.block.LeadDoorBlock.ANIMATED;
23+
import static net.minecraft.world.level.block.state.properties.BlockStateProperties.OPEN;
24+
25+
public class HeavyDoorBlockEntity extends BlockEntity {
26+
27+
private int pressure = 0;
28+
29+
private final BlockSetType set = OBlocks.LEAD_BLOCK_SET;
30+
31+
private static final int REQUIRED_PRESSURE_OPEN = 20;
32+
33+
public HeavyDoorBlockEntity(BlockPos pos, BlockState state) {
34+
super(OBlockEntities.HEAVY_DOOR.get(), pos, state);
35+
}
36+
37+
public static Optional<HeavyDoorBlockEntity> getAt(LevelAccessor level, BlockPos pos) {
38+
var be = level.getBlockEntity(pos);
39+
if (be instanceof HeavyDoorBlockEntity door) return Optional.of(door);
40+
return Optional.empty();
41+
}
42+
43+
@SuppressWarnings("unchecked")
44+
public static @Nullable <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, BlockState state, BlockEntityType<T> type) {
45+
if (type == OBlockEntities.HEAVY_DOOR.get()) {
46+
BlockEntityTicker<HeavyDoorBlockEntity> ticker = (l, p, s, be) -> be.tick(s, l, p);
47+
return (BlockEntityTicker<T>) ticker;
48+
}
49+
50+
return null;
51+
}
52+
53+
public void tick(BlockState state, Level level, BlockPos pos) {
54+
if (pressure <= 0) return;
55+
56+
pressure--;
57+
58+
if (pressure == 0) {
59+
if (state.getValue(OPEN)) {
60+
state = state.setValue(OPEN, false);
61+
level.setBlock(pos, state, 10);
62+
level.gameEvent(GameEvent.BLOCK_CLOSE, pos, GameEvent.Context.of(state));
63+
if (state.getBlock() instanceof IHeavyDoor heavy) heavy.sound(null, level, pos, false);
64+
}
65+
66+
stopUsing(state, level, pos, null);
67+
} else if (pressure < (REQUIRED_PRESSURE_OPEN - 5)) {
68+
setAnimationState(level, pos, state, true);
69+
}
70+
}
71+
72+
private void setAnimationState(Level level, BlockPos pos, BlockState state, boolean animationState) {
73+
if (state.hasProperty(ANIMATED) && state.getValue(ANIMATED) != animationState) {
74+
level.setBlockAndUpdate(pos, state.setValue(ANIMATED, animationState));
75+
}
76+
}
77+
78+
private void stopUsing(BlockState state, Level level, BlockPos pos, @Nullable Player player) {
79+
setAnimationState(level, pos, state, false);
80+
}
81+
82+
public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player) {
83+
var progressHolder = (IDoorProgressHolder) player;
84+
progressHolder.oreganised$incrementOpeningProgress();
85+
86+
if (state.getBlock() instanceof IMeltableBlock meltable) {
87+
var goopyness = meltable.getGoopyness(state);
88+
if (goopyness > 0) {
89+
player.hurt(level.damageSources().source(ODamageSources.MOLTEN_LEAD), 1F);
90+
}
91+
if (goopyness > 1) return InteractionResult.FAIL;
92+
}
93+
94+
if (pressure == 0) {
95+
setAnimationState(level, pos, state, true);
96+
}
97+
98+
if (!level.isClientSide) System.out.println(pressure);
99+
100+
if (pressure < REQUIRED_PRESSURE_OPEN) {
101+
pressure += 6;
102+
}
103+
104+
if (pressure > REQUIRED_PRESSURE_OPEN && !state.getValue(OPEN)) {
105+
state = state.setValue(OPEN, true);
106+
level.setBlock(pos, state, 10);
107+
level.gameEvent(GameEvent.BLOCK_OPEN, pos, GameEvent.Context.of(state));
108+
if (state.getBlock() instanceof IHeavyDoor heavy) heavy.sound(player, level, pos, true);
109+
stopUsing(state, level, pos, player);
110+
}
111+
112+
return InteractionResult.sidedSuccess(level.isClientSide);
113+
}
114+
115+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package galena.oreganized.content.block;
2+
3+
import net.minecraft.core.BlockPos;
4+
import net.minecraft.world.entity.player.Player;
5+
import net.minecraft.world.level.Level;
6+
import org.jetbrains.annotations.Nullable;
7+
8+
public interface IHeavyDoor {
9+
10+
void sound(@Nullable Player player, Level level, BlockPos pos, boolean open);
11+
12+
}

src/main/java/galena/oreganized/content/block/IMeltableBlock.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,8 @@ default void tickMelting(BlockState state, Level world, BlockPos pos, RandomSour
8888
}
8989
}
9090

91-
world.scheduleTick(pos, state.getBlock(), 1);
91+
scheduleUpdate(world, pos, state.getBlock());
92+
//world.scheduleTick(pos, state.getBlock(), 1);
9293
}
9394

9495
default void hurt(BlockState state, Level world, Entity entity) {

0 commit comments

Comments
 (0)