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) {
|
public void save(Game game) {
|
||||||
try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("world.ser"))) {
|
try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("world.ser"))) {
|
||||||
out.writeObject(game);
|
out.writeObject(game);
|
||||||
System.out.println("Inner class saved!");
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
@ -11,11 +11,12 @@ import cz.jzitnik.tui.SpriteList;
|
|||||||
import org.jline.terminal.MouseEvent;
|
import org.jline.terminal.MouseEvent;
|
||||||
import org.jline.terminal.Terminal;
|
import org.jline.terminal.Terminal;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@RightClickLogic
|
@RightClickLogic
|
||||||
public class Chest implements RightClickHandler {
|
public class Chest implements RightClickHandler, Serializable {
|
||||||
private static final int ROW_AMOUNT = 4;
|
private static final int ROW_AMOUNT = 4;
|
||||||
private static final int COLUMN_AMOUNT = 6;
|
private static final int COLUMN_AMOUNT = 6;
|
||||||
private static final int CELL_WIDTH = 50;
|
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.MouseEvent;
|
||||||
import org.jline.terminal.Terminal;
|
import org.jline.terminal.Terminal;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@RightClickLogic
|
@RightClickLogic
|
||||||
public class Furnace implements RightClickHandler {
|
public class Furnace implements RightClickHandler, Serializable {
|
||||||
private final Block block;
|
private final Block block;
|
||||||
private final InventoryItem[] items = new InventoryItem[2];
|
private final InventoryItem[] items = new InventoryItem[2];
|
||||||
private InventoryItem outputItem;
|
private InventoryItem outputItem;
|
||||||
|
@ -8,8 +8,10 @@ import cz.jzitnik.game.sprites.OakDoor;
|
|||||||
|
|
||||||
import cz.jzitnik.tui.ScreenRenderer;
|
import cz.jzitnik.tui.ScreenRenderer;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
@RightClickLogic
|
@RightClickLogic
|
||||||
public class OakDoorData implements RightClickHandler {
|
public class OakDoorData implements RightClickHandler, Serializable {
|
||||||
private void change(Block door) {
|
private void change(Block door) {
|
||||||
door.setSpriteState(switch (door.getSpriteState().get()) {
|
door.setSpriteState(switch (door.getSpriteState().get()) {
|
||||||
case OakDoor.OakDoorState.TOP -> OakDoor.OakDoorState.TOPCLOSED;
|
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) {
|
public boolean mine(Game game, int x, int y) {
|
||||||
var blocks = game.getWorld()[y][x];
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -43,16 +43,16 @@ public class DoorPlaceHandler implements CustomPlaceHandler {
|
|||||||
if (block.getSpriteState().get() == OakDoor.OakDoorState.BOTTOM
|
if (block.getSpriteState().get() == OakDoor.OakDoorState.BOTTOM
|
||||||
|| block.getSpriteState().get() == OakDoor.OakDoorState.BOTTOMCLOSED) {
|
|| block.getSpriteState().get() == OakDoor.OakDoorState.BOTTOMCLOSED) {
|
||||||
var blocks2 = game.getWorld()[y - 1][x];
|
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
|
if (block.getSpriteState().get() == OakDoor.OakDoorState.TOP
|
||||||
|| block.getSpriteState().get() == OakDoor.OakDoorState.TOPCLOSED) {
|
|| block.getSpriteState().get() == OakDoor.OakDoorState.TOPCLOSED) {
|
||||||
var blocks2 = game.getWorld()[y + 1][x];
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ public class OakLeavesMineHandler implements CustomPlaceHandler {
|
|||||||
public boolean mine(Game game, int x, int y) {
|
public boolean mine(Game game, int x, int y) {
|
||||||
var blocks = game.getWorld()[y][x];
|
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();
|
Random random = new Random();
|
||||||
int percentage = random.nextInt(100);
|
int percentage = random.nextInt(100);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user