forked from GL33P-0R4NG3/oreganized
-
-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #51 from Xaidee/feature/block-entity-lead-door
- Loading branch information
Showing
37 changed files
with
309 additions
and
116 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
6 changes: 3 additions & 3 deletions
6
src/generated/resources/assets/oreganized/models/block/goopy_lead_door_bottom_left_open.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | ||
} | ||
} |
6 changes: 3 additions & 3 deletions
6
...generated/resources/assets/oreganized/models/block/goopy_lead_door_bottom_right_open.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | ||
} | ||
} |
6 changes: 3 additions & 3 deletions
6
src/generated/resources/assets/oreganized/models/block/goopy_lead_door_top_left_open.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | ||
} | ||
} |
6 changes: 3 additions & 3 deletions
6
src/generated/resources/assets/oreganized/models/block/goopy_lead_door_top_right_open.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | ||
} | ||
} |
6 changes: 3 additions & 3 deletions
6
src/generated/resources/assets/oreganized/models/block/lead_door_bottom_left_open.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | ||
} | ||
} |
6 changes: 3 additions & 3 deletions
6
src/generated/resources/assets/oreganized/models/block/lead_door_bottom_right_open.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | ||
} | ||
} |
6 changes: 3 additions & 3 deletions
6
src/generated/resources/assets/oreganized/models/block/lead_door_top_left_open.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | ||
} | ||
} |
6 changes: 3 additions & 3 deletions
6
src/generated/resources/assets/oreganized/models/block/lead_door_top_right_open.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | ||
} | ||
} |
2 changes: 1 addition & 1 deletion
2
...enerated/resources/assets/oreganized/models/block/red_hot_lead_door_bottom_left_open.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
...nerated/resources/assets/oreganized/models/block/red_hot_lead_door_bottom_right_open.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
src/generated/resources/assets/oreganized/models/block/red_hot_lead_door_top_left_open.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
src/generated/resources/assets/oreganized/models/block/red_hot_lead_door_top_right_open.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
115 changes: 115 additions & 0 deletions
115
src/main/java/galena/oreganized/content/block/HeavyDoorBlockEntity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
12
src/main/java/galena/oreganized/content/block/IHeavyDoor.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.