Skip to content

Commit

Permalink
Merge pull request #51 from Xaidee/feature/block-entity-lead-door
Browse files Browse the repository at this point in the history
  • Loading branch information
PssbleTrngle committed Sep 11, 2024
2 parents f3aa011 + 6c060b3 commit 5575667
Show file tree
Hide file tree
Showing 37 changed files with 309 additions and 116 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// 1.20.1 2024-09-10T14:28:17.9625293 oreganized Block States
// 1.20.1 2024-09-11T16:17:06.6440035 oreganized Block States
d85b0fb9e5cad1d9c4f22ed192b0fa621ee3373c assets/oreganized/blockstates/black_crystal_glass.json
05bb006ff7f48557fe5c5333bc120f7206052717 assets/oreganized/blockstates/black_crystal_glass_pane.json
5e5002e9c77ee7221425eeacce8834af484db877 assets/oreganized/blockstates/blue_crystal_glass.json
Expand Down Expand Up @@ -218,13 +218,13 @@ eb736a40471fcd231ce12c1c955fee39ce7db3ef assets/oreganized/models/block/goopy_le
581f0c65a273d4b16d5a696c249a900cff7775ca assets/oreganized/models/block/goopy_lead_bricks.json
a54be9d65eda1e43cd4bfd27eaab530f40637c75 assets/oreganized/models/block/goopy_lead_bulb.json
3ef5a41187f81462deb02c9b3be0560e229f0658 assets/oreganized/models/block/goopy_lead_door_bottom_left.json
0f1acdd379a6591dea4d516f90cb3b021e9432fd assets/oreganized/models/block/goopy_lead_door_bottom_left_open.json
24dc8aae0b84ed2a7b83709bf32fe8daa02501e3 assets/oreganized/models/block/goopy_lead_door_bottom_left_open.json
645ac4e18f99ee425ee54e81ea907fc389317fb0 assets/oreganized/models/block/goopy_lead_door_bottom_right.json
441b5e78d22ee097e362819638b3695d8f9503d8 assets/oreganized/models/block/goopy_lead_door_bottom_right_open.json
a7129d11480bda18172408b5e2e6fede1603d473 assets/oreganized/models/block/goopy_lead_door_bottom_right_open.json
d0d41977f3533864f9022c444888ac7cc512c410 assets/oreganized/models/block/goopy_lead_door_top_left.json
cee209d2e04c5726273c3fe439299d0312f18f35 assets/oreganized/models/block/goopy_lead_door_top_left_open.json
260960130854eb79089a484619de8671ba0a1743 assets/oreganized/models/block/goopy_lead_door_top_left_open.json
9e576a3e34c597f130dbfc73ea277135838aa1d9 assets/oreganized/models/block/goopy_lead_door_top_right.json
90b037d4f5d327ac85adae97bcf9ea844ed191a7 assets/oreganized/models/block/goopy_lead_door_top_right_open.json
613227af844a6749c9f60a39c6e459b843b4f2ee assets/oreganized/models/block/goopy_lead_door_top_right_open.json
6b54070af3244091a12a857e881b735bdd8a4ea8 assets/oreganized/models/block/goopy_lead_pillar.json
ef326609bd98c61e74dd32823a5a263cc7397f53 assets/oreganized/models/block/goopy_lead_trapdoor_bottom.json
2809d897af406d87c14696867ae3f468e2cd1311 assets/oreganized/models/block/goopy_lead_trapdoor_open.json
Expand Down Expand Up @@ -293,13 +293,13 @@ c817f48d9b0b502e26c7d4f44f76f9a260c846e4 assets/oreganized/models/block/lead_bar
fb1ee9f9c979aabda19fcc48ec167ba711d35ae2 assets/oreganized/models/block/lead_bricks.json
b93ab0c45a40dc3a5a25a6ccde6e8eb2471e0084 assets/oreganized/models/block/lead_bulb.json
19d826c306b5753a7c9d5539e5ac76c75dcebec9 assets/oreganized/models/block/lead_door_bottom_left.json
e35105d4de1c64bdd9e13e7fff57be7edece258e assets/oreganized/models/block/lead_door_bottom_left_open.json
90047d804c7346b2246f8f87a22328816ed77156 assets/oreganized/models/block/lead_door_bottom_left_open.json
e0cb3ee1fd12c5bd73b3e37123313fc80cfe750b assets/oreganized/models/block/lead_door_bottom_right.json
2c615cd5ba923aea7400c21e059f3616e54941a8 assets/oreganized/models/block/lead_door_bottom_right_open.json
a3b5fb9f197b9d401d6863366d6d3d657eae521d assets/oreganized/models/block/lead_door_bottom_right_open.json
294fa31777669bcd393605136f68653d2032f4d9 assets/oreganized/models/block/lead_door_top_left.json
bb46bf47651b0d7540f4a43a43a22b23a624ef2b assets/oreganized/models/block/lead_door_top_left_open.json
be51e111a7b4e942be7c88cdca28f2b4a24e8fbe assets/oreganized/models/block/lead_door_top_left_open.json
969a6d9a5236354a465a19902da2484641ad13f9 assets/oreganized/models/block/lead_door_top_right.json
b6c2127a8585836a76905ca3a72c8bd078a02a50 assets/oreganized/models/block/lead_door_top_right_open.json
d3a87e54d03e4fdcd043dff4c64b8c816fb64c8e assets/oreganized/models/block/lead_door_top_right_open.json
638234cafeea24173c4c595e3f6b5f0eead7f3f9 assets/oreganized/models/block/lead_ore.json
48d0cda98b8a321498318830f37f31f5b1e37256 assets/oreganized/models/block/lead_pillar.json
2035fbf628e2e29273c51b129b86d3d5a7420a02 assets/oreganized/models/block/lead_trapdoor_bottom.json
Expand Down Expand Up @@ -525,13 +525,13 @@ e7902f26b6dae9da5d5b503af270dfebb38f4701 assets/oreganized/models/block/red_hot_
aa503c4926d1de2115155c6373559430025f3879 assets/oreganized/models/block/red_hot_lead_bars_side.json
6bcdcd41988a7cc5ebd7273f5bd7accef9eaef04 assets/oreganized/models/block/red_hot_lead_bars_side_alt.json
6981808121cac6c55a84203a9c8e3ab5a50083fc assets/oreganized/models/block/red_hot_lead_door_bottom_left.json
16d40ca4a06924e3e4beafee1e9c16d9667afa80 assets/oreganized/models/block/red_hot_lead_door_bottom_left_open.json
6981808121cac6c55a84203a9c8e3ab5a50083fc assets/oreganized/models/block/red_hot_lead_door_bottom_left_open.json
d606f62302a9656482f8076d3592122a95ebda2a assets/oreganized/models/block/red_hot_lead_door_bottom_right.json
4f556eae6757ea29198f33d722286aa559827fec assets/oreganized/models/block/red_hot_lead_door_bottom_right_open.json
d606f62302a9656482f8076d3592122a95ebda2a assets/oreganized/models/block/red_hot_lead_door_bottom_right_open.json
288adc1c97cd701ce45867813f7a23272b164c02 assets/oreganized/models/block/red_hot_lead_door_top_left.json
849fcabcf33bb1f3d052ec51740cab54a3497652 assets/oreganized/models/block/red_hot_lead_door_top_left_open.json
288adc1c97cd701ce45867813f7a23272b164c02 assets/oreganized/models/block/red_hot_lead_door_top_left_open.json
9aefc0424c65cfd5a4394bff34e2d3ed9556debe assets/oreganized/models/block/red_hot_lead_door_top_right.json
61ea4d270626f3599b9de0ffb79333d86e5f0129 assets/oreganized/models/block/red_hot_lead_door_top_right_open.json
9aefc0424c65cfd5a4394bff34e2d3ed9556debe assets/oreganized/models/block/red_hot_lead_door_top_right_open.json
5924b1619aa47b9770b9c20e703eb8d120906ca8 assets/oreganized/models/block/red_hot_lead_trapdoor_bottom.json
6056202082cd609584dd6fd4571c8e4b615988a5 assets/oreganized/models/block/red_hot_lead_trapdoor_open.json
1974b68a782c0fcbe8b00eaf5c913341456bcfc3 assets/oreganized/models/block/red_hot_lead_trapdoor_top.json
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"parent": "minecraft:block/door_bottom_left_open",
"parent": "minecraft:block/door_bottom_left",
"textures": {
"bottom": "oreganized:block/goopy_lead_door_bottom",
"top": "oreganized:block/goopy_lead_door_top"
"bottom": "oreganized:block/goopy_lead_door_bottom_open",
"top": "oreganized:block/goopy_lead_door_top_open"
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"parent": "minecraft:block/door_bottom_right_open",
"parent": "minecraft:block/door_bottom_right",
"textures": {
"bottom": "oreganized:block/goopy_lead_door_bottom",
"top": "oreganized:block/goopy_lead_door_top"
"bottom": "oreganized:block/goopy_lead_door_bottom_open",
"top": "oreganized:block/goopy_lead_door_top_open"
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"parent": "minecraft:block/door_top_left_open",
"parent": "minecraft:block/door_top_left",
"textures": {
"bottom": "oreganized:block/goopy_lead_door_bottom",
"top": "oreganized:block/goopy_lead_door_top"
"bottom": "oreganized:block/goopy_lead_door_bottom_open",
"top": "oreganized:block/goopy_lead_door_top_open"
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"parent": "minecraft:block/door_top_right_open",
"parent": "minecraft:block/door_top_right",
"textures": {
"bottom": "oreganized:block/goopy_lead_door_bottom",
"top": "oreganized:block/goopy_lead_door_top"
"bottom": "oreganized:block/goopy_lead_door_bottom_open",
"top": "oreganized:block/goopy_lead_door_top_open"
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"parent": "minecraft:block/door_bottom_left_open",
"parent": "minecraft:block/door_bottom_left",
"textures": {
"bottom": "oreganized:block/lead_door_bottom",
"top": "oreganized:block/lead_door_top"
"bottom": "oreganized:block/lead_door_bottom_open",
"top": "oreganized:block/lead_door_top_open"
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"parent": "minecraft:block/door_bottom_right_open",
"parent": "minecraft:block/door_bottom_right",
"textures": {
"bottom": "oreganized:block/lead_door_bottom",
"top": "oreganized:block/lead_door_top"
"bottom": "oreganized:block/lead_door_bottom_open",
"top": "oreganized:block/lead_door_top_open"
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"parent": "minecraft:block/door_top_left_open",
"parent": "minecraft:block/door_top_left",
"textures": {
"bottom": "oreganized:block/lead_door_bottom",
"top": "oreganized:block/lead_door_top"
"bottom": "oreganized:block/lead_door_bottom_open",
"top": "oreganized:block/lead_door_top_open"
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"parent": "minecraft:block/door_top_right_open",
"parent": "minecraft:block/door_top_right",
"textures": {
"bottom": "oreganized:block/lead_door_bottom",
"top": "oreganized:block/lead_door_top"
"bottom": "oreganized:block/lead_door_bottom_open",
"top": "oreganized:block/lead_door_top_open"
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"parent": "minecraft:block/door_bottom_left_open",
"parent": "minecraft:block/door_bottom_left",
"textures": {
"bottom": "oreganized:block/red_hot_lead",
"top": "oreganized:block/red_hot_lead"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"parent": "minecraft:block/door_bottom_right_open",
"parent": "minecraft:block/door_bottom_right",
"textures": {
"bottom": "oreganized:block/red_hot_lead",
"top": "oreganized:block/red_hot_lead"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"parent": "minecraft:block/door_top_left_open",
"parent": "minecraft:block/door_top_left",
"textures": {
"bottom": "oreganized:block/red_hot_lead",
"top": "oreganized:block/red_hot_lead"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"parent": "minecraft:block/door_top_right_open",
"parent": "minecraft:block/door_top_right",
"textures": {
"bottom": "oreganized:block/red_hot_lead",
"top": "oreganized:block/red_hot_lead"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
package galena.oreganized.content.block;

import galena.oreganized.index.OBlockEntities;
import galena.oreganized.index.OBlocks;
import galena.oreganized.index.ODamageSources;
import galena.oreganized.world.IDoorProgressHolder;
import net.minecraft.core.BlockPos;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityTicker;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockSetType;
import net.minecraft.world.level.gameevent.GameEvent;
import org.jetbrains.annotations.Nullable;

import java.util.Optional;

import static galena.oreganized.content.block.LeadDoorBlock.ANIMATED;
import static net.minecraft.world.level.block.state.properties.BlockStateProperties.OPEN;

public class HeavyDoorBlockEntity extends BlockEntity {

private int pressure = 0;

private final BlockSetType set = OBlocks.LEAD_BLOCK_SET;

private static final int REQUIRED_PRESSURE_OPEN = 20;

public HeavyDoorBlockEntity(BlockPos pos, BlockState state) {
super(OBlockEntities.HEAVY_DOOR.get(), pos, state);
}

public static Optional<HeavyDoorBlockEntity> getAt(LevelAccessor level, BlockPos pos) {
var be = level.getBlockEntity(pos);
if (be instanceof HeavyDoorBlockEntity door) return Optional.of(door);
return Optional.empty();
}

@SuppressWarnings("unchecked")
public static @Nullable <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, BlockState state, BlockEntityType<T> type) {
if (type == OBlockEntities.HEAVY_DOOR.get()) {
BlockEntityTicker<HeavyDoorBlockEntity> ticker = (l, p, s, be) -> be.tick(s, l, p);
return (BlockEntityTicker<T>) ticker;
}

return null;
}

public void tick(BlockState state, Level level, BlockPos pos) {
if (pressure <= 0) return;

pressure--;

if (pressure == 0) {
if (state.getValue(OPEN)) {
state = state.setValue(OPEN, false);
level.setBlock(pos, state, 10);
level.gameEvent(GameEvent.BLOCK_CLOSE, pos, GameEvent.Context.of(state));
if (state.getBlock() instanceof IHeavyDoor heavy) heavy.sound(null, level, pos, false);
}

stopUsing(state, level, pos, null);
} else if (pressure < (REQUIRED_PRESSURE_OPEN - 5)) {
setAnimationState(level, pos, state, true);
}
}

private void setAnimationState(Level level, BlockPos pos, BlockState state, boolean animationState) {
if (state.hasProperty(ANIMATED) && state.getValue(ANIMATED) != animationState) {
level.setBlockAndUpdate(pos, state.setValue(ANIMATED, animationState));
}
}

private void stopUsing(BlockState state, Level level, BlockPos pos, @Nullable Player player) {
setAnimationState(level, pos, state, false);
}

public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player) {
var progressHolder = (IDoorProgressHolder) player;
progressHolder.oreganised$incrementOpeningProgress();

if (state.getBlock() instanceof IMeltableBlock meltable) {
var goopyness = meltable.getGoopyness(state);
if (goopyness > 0) {
player.hurt(level.damageSources().source(ODamageSources.MOLTEN_LEAD), 1F);
}
if (goopyness > 1) return InteractionResult.FAIL;
}

if (pressure == 0) {
setAnimationState(level, pos, state, true);
}

if (!level.isClientSide) System.out.println(pressure);

if (pressure < REQUIRED_PRESSURE_OPEN) {
pressure += 6;
}

if (pressure > REQUIRED_PRESSURE_OPEN && !state.getValue(OPEN)) {
state = state.setValue(OPEN, true);
level.setBlock(pos, state, 10);
level.gameEvent(GameEvent.BLOCK_OPEN, pos, GameEvent.Context.of(state));
if (state.getBlock() instanceof IHeavyDoor heavy) heavy.sound(player, level, pos, true);
stopUsing(state, level, pos, player);
}

return InteractionResult.sidedSuccess(level.isClientSide);
}

}
12 changes: 12 additions & 0 deletions src/main/java/galena/oreganized/content/block/IHeavyDoor.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package galena.oreganized.content.block;

import net.minecraft.core.BlockPos;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level;
import org.jetbrains.annotations.Nullable;

public interface IHeavyDoor {

void sound(@Nullable Player player, Level level, BlockPos pos, boolean open);

}
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,8 @@ default void tickMelting(BlockState state, Level world, BlockPos pos, RandomSour
}
}

world.scheduleTick(pos, state.getBlock(), 1);
scheduleUpdate(world, pos, state.getBlock());
//world.scheduleTick(pos, state.getBlock(), 1);
}

default void hurt(BlockState state, Level world, Entity entity) {
Expand Down
Loading

0 comments on commit 5575667

Please sign in to comment.