forked from jzitnik/twodcraft
fix: Mining mobs when in ghost block and saving
This commit is contained in:
parent
73050de76d
commit
26f35da0f3
@ -6,7 +6,6 @@ public class GameSaver {
|
||||
public void save(Game game) {
|
||||
try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("world.ser"))) {
|
||||
out.writeObject(game);
|
||||
System.out.println("Inner class saved!");
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
@ -11,11 +11,12 @@ import cz.jzitnik.tui.SpriteList;
|
||||
import org.jline.terminal.MouseEvent;
|
||||
import org.jline.terminal.Terminal;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@RightClickLogic
|
||||
public class Chest implements RightClickHandler {
|
||||
public class Chest implements RightClickHandler, Serializable {
|
||||
private static final int ROW_AMOUNT = 4;
|
||||
private static final int COLUMN_AMOUNT = 6;
|
||||
private static final int CELL_WIDTH = 50;
|
||||
|
@ -16,11 +16,12 @@ import cz.jzitnik.tui.utils.SpriteCombiner;
|
||||
import org.jline.terminal.MouseEvent;
|
||||
import org.jline.terminal.Terminal;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@RightClickLogic
|
||||
public class Furnace implements RightClickHandler {
|
||||
public class Furnace implements RightClickHandler, Serializable {
|
||||
private final Block block;
|
||||
private final InventoryItem[] items = new InventoryItem[2];
|
||||
private InventoryItem outputItem;
|
||||
|
@ -8,8 +8,10 @@ import cz.jzitnik.game.sprites.OakDoor;
|
||||
|
||||
import cz.jzitnik.tui.ScreenRenderer;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@RightClickLogic
|
||||
public class OakDoorData implements RightClickHandler {
|
||||
public class OakDoorData implements RightClickHandler, Serializable {
|
||||
private void change(Block door) {
|
||||
door.setSpriteState(switch (door.getSpriteState().get()) {
|
||||
case OakDoor.OakDoorState.TOP -> OakDoor.OakDoorState.TOPCLOSED;
|
||||
|
@ -21,7 +21,7 @@ public class DefaultPlaceHandler implements CustomPlaceHandler {
|
||||
public boolean mine(Game game, int x, int y) {
|
||||
var blocks = game.getWorld()[y][x];
|
||||
|
||||
blocks.removeAll(blocks.stream().filter(i -> !i.getBlockId().equals("air")).toList());
|
||||
blocks.removeAll(blocks.stream().filter(i -> !i.getBlockId().equals("air") && !i.isMob()).toList());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -43,16 +43,16 @@ public class DoorPlaceHandler implements CustomPlaceHandler {
|
||||
if (block.getSpriteState().get() == OakDoor.OakDoorState.BOTTOM
|
||||
|| block.getSpriteState().get() == OakDoor.OakDoorState.BOTTOMCLOSED) {
|
||||
var blocks2 = game.getWorld()[y - 1][x];
|
||||
blocks2.removeAll(blocks2.stream().filter(i -> !i.getBlockId().equals("air")).toList());
|
||||
blocks2.removeAll(blocks2.stream().filter(i -> !i.getBlockId().equals("air") && !i.isMob()).toList());
|
||||
}
|
||||
|
||||
if (block.getSpriteState().get() == OakDoor.OakDoorState.TOP
|
||||
|| block.getSpriteState().get() == OakDoor.OakDoorState.TOPCLOSED) {
|
||||
var blocks2 = game.getWorld()[y + 1][x];
|
||||
blocks2.removeAll(blocks2.stream().filter(i -> !i.getBlockId().equals("air")).toList());
|
||||
blocks2.removeAll(blocks2.stream().filter(i -> !i.getBlockId().equals("air") && !i.isMob()).toList());
|
||||
}
|
||||
|
||||
blocks.removeAll(blocks.stream().filter(i -> !i.getBlockId().equals("air")).toList());
|
||||
blocks.removeAll(blocks.stream().filter(i -> !i.getBlockId().equals("air") && !i.isMob()).toList());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ public class OakLeavesMineHandler implements CustomPlaceHandler {
|
||||
public boolean mine(Game game, int x, int y) {
|
||||
var blocks = game.getWorld()[y][x];
|
||||
|
||||
blocks.removeAll(blocks.stream().filter(i -> !i.getBlockId().equals("air")).toList());
|
||||
blocks.removeAll(blocks.stream().filter(i -> !i.getBlockId().equals("air") && !i.isMob()).toList());
|
||||
|
||||
Random random = new Random();
|
||||
int percentage = random.nextInt(100);
|
||||
|
Loading…
x
Reference in New Issue
Block a user