mirror of
https://github.com/songoda/EpicHoppers.git
synced 2024-11-29 05:36:04 +01:00
Fix null owner
This commit is contained in:
parent
6413d74253
commit
d4737640a7
@ -6,6 +6,7 @@ import com.craftaro.epichoppers.hopper.teleport.TeleportTrigger;
|
|||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -23,7 +24,7 @@ public interface Hopper extends Data {
|
|||||||
|
|
||||||
@Nullable UUID getLastPlayerOpened();
|
@Nullable UUID getLastPlayerOpened();
|
||||||
|
|
||||||
@Nullable UUID getPlacedBy();
|
@NotNull UUID getPlacedBy();
|
||||||
|
|
||||||
void setPlacedBy(UUID placedBy);
|
void setPlacedBy(UUID placedBy);
|
||||||
|
|
||||||
|
@ -11,12 +11,12 @@ import java.util.UUID;
|
|||||||
public class HopperBuilder {
|
public class HopperBuilder {
|
||||||
private final HopperImpl hopper;
|
private final HopperImpl hopper;
|
||||||
|
|
||||||
public HopperBuilder(Location location) {
|
public HopperBuilder(Location location, UUID owner) {
|
||||||
this.hopper = new HopperImpl(location);
|
this.hopper = new HopperImpl(location, owner);
|
||||||
}
|
}
|
||||||
|
|
||||||
public HopperBuilder(Block block) {
|
public HopperBuilder(Block block, UUID owner) {
|
||||||
this(block.getLocation());
|
this(block.getLocation(), owner);
|
||||||
}
|
}
|
||||||
|
|
||||||
public HopperBuilder setId(int id) {
|
public HopperBuilder setId(int id) {
|
||||||
|
@ -33,6 +33,7 @@ import org.bukkit.inventory.InventoryHolder;
|
|||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.util.io.BukkitObjectInputStream;
|
import org.bukkit.util.io.BukkitObjectInputStream;
|
||||||
import org.jetbrains.annotations.ApiStatus;
|
import org.jetbrains.annotations.ApiStatus;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder;
|
import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
@ -55,7 +56,7 @@ public class HopperImpl implements Hopper {
|
|||||||
private final Location location;
|
private final Location location;
|
||||||
private Level level = getLevelManager().getLowestLevel();
|
private Level level = getLevelManager().getLowestLevel();
|
||||||
private UUID lastPlayerOpened = null;
|
private UUID lastPlayerOpened = null;
|
||||||
private UUID placedBy = null;
|
private UUID placedBy;
|
||||||
private final List<Location> linkedBlocks = new ArrayList<>();
|
private final List<Location> linkedBlocks = new ArrayList<>();
|
||||||
private Filter filter = new Filter();
|
private Filter filter = new Filter();
|
||||||
private TeleportTrigger teleportTrigger = TeleportTrigger.DISABLED;
|
private TeleportTrigger teleportTrigger = TeleportTrigger.DISABLED;
|
||||||
@ -74,7 +75,8 @@ public class HopperImpl implements Hopper {
|
|||||||
this.location = null;
|
this.location = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public HopperImpl(Location location) {
|
public HopperImpl(Location location, UUID placedBy) {
|
||||||
|
this.placedBy = placedBy;
|
||||||
this.location = location;
|
this.location = location;
|
||||||
this.id = EpicHoppers.getPlugin(EpicHoppers.class).getDataManager().getNextId("placed_hoppers");
|
this.id = EpicHoppers.getPlugin(EpicHoppers.class).getDataManager().getNextId("placed_hoppers");
|
||||||
}
|
}
|
||||||
@ -340,7 +342,7 @@ public class HopperImpl implements Hopper {
|
|||||||
this.level = level;
|
this.level = level;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID getPlacedBy() {
|
public @NotNull UUID getPlacedBy() {
|
||||||
return this.placedBy;
|
return this.placedBy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ import java.util.Collection;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public class HopperManager {
|
public class HopperManager {
|
||||||
private final Map<Location, HopperImpl> registeredHoppers = new HashMap<>();
|
private final Map<Location, HopperImpl> registeredHoppers = new HashMap<>();
|
||||||
@ -75,13 +76,17 @@ public class HopperManager {
|
|||||||
return removed;
|
return removed;
|
||||||
}
|
}
|
||||||
|
|
||||||
public HopperImpl getHopper(Location location) {
|
public HopperImpl getHopper(Location location, UUID createForIfNotExists) {
|
||||||
if (!this.registeredHoppers.containsKey(location = roundLocation(location))) {
|
if (!this.registeredHoppers.containsKey(location = roundLocation(location))) {
|
||||||
if (!this.ready) {
|
if (!this.ready) {
|
||||||
throw new IllegalStateException("Hoppers are still being loaded");
|
throw new IllegalStateException("Hoppers are still being loaded");
|
||||||
}
|
}
|
||||||
|
|
||||||
HopperImpl hopper = addHopper(new HopperImpl(location));
|
if (createForIfNotExists == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
HopperImpl hopper = addHopper(new HopperImpl(location, createForIfNotExists));
|
||||||
this.plugin.getDataManager().save(hopper);
|
this.plugin.getDataManager().save(hopper);
|
||||||
this.registeredHoppers.put(location, hopper);
|
this.registeredHoppers.put(location, hopper);
|
||||||
return hopper;
|
return hopper;
|
||||||
@ -89,8 +94,8 @@ public class HopperManager {
|
|||||||
return this.registeredHoppers.get(location);
|
return this.registeredHoppers.get(location);
|
||||||
}
|
}
|
||||||
|
|
||||||
public HopperImpl getHopper(Block block) {
|
public HopperImpl getHopper(Block block, UUID createForIfNotExists) {
|
||||||
return getHopper(block.getLocation());
|
return getHopper(block.getLocation(), createForIfNotExists);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -65,7 +65,11 @@ public class TeleportHandlerImpl implements TeleportHandler {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
HopperImpl hopper = this.plugin.getHopperManager().getHopper(location);
|
HopperImpl hopper = this.plugin.getHopperManager().getHopper(location, null);
|
||||||
|
|
||||||
|
if (hopper == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (hopper.getTeleportTrigger() != TeleportTrigger.WALK_ON) {
|
if (hopper.getTeleportTrigger() != TeleportTrigger.WALK_ON) {
|
||||||
continue;
|
continue;
|
||||||
@ -98,7 +102,7 @@ public class TeleportHandlerImpl implements TeleportHandler {
|
|||||||
|
|
||||||
for (Location nextHopperLocation : lastHopper.getLinkedBlocks()) {
|
for (Location nextHopperLocation : lastHopper.getLinkedBlocks()) {
|
||||||
if (nextHopperLocation.getBlock().getState() instanceof org.bukkit.block.Hopper) {
|
if (nextHopperLocation.getBlock().getState() instanceof org.bukkit.block.Hopper) {
|
||||||
Hopper hopper = this.plugin.getHopperManager().getHopper(nextHopperLocation);
|
Hopper hopper = this.plugin.getHopperManager().getHopper(nextHopperLocation, null);
|
||||||
if (hopper != null) {
|
if (hopper != null) {
|
||||||
return this.getChain(hopper, currentChainLength + 1);
|
return this.getChain(hopper, currentChainLength + 1);
|
||||||
}
|
}
|
||||||
|
@ -69,9 +69,8 @@ public class BlockListeners implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
HopperImpl hopper = this.plugin.getHopperManager().addHopper(
|
HopperImpl hopper = this.plugin.getHopperManager().addHopper(
|
||||||
new HopperBuilder(e.getBlock())
|
new HopperBuilder(e.getBlock(), player.getUniqueId())
|
||||||
.setLevel(this.plugin.getLevelManager().getLevel(item))
|
.setLevel(this.plugin.getLevelManager().getLevel(item))
|
||||||
.setPlacedBy(player)
|
|
||||||
.setLastPlayerOpened(player).build());
|
.setLastPlayerOpened(player).build());
|
||||||
|
|
||||||
HopperPlaceEvent hopperPlaceEvent = new HopperPlaceEvent(player, hopper);
|
HopperPlaceEvent hopperPlaceEvent = new HopperPlaceEvent(player, hopper);
|
||||||
@ -130,7 +129,7 @@ public class BlockListeners implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
HopperImpl hopper = this.plugin.getHopperManager().getHopper(block);
|
HopperImpl hopper = this.plugin.getHopperManager().getHopper(block, player.getUniqueId());
|
||||||
|
|
||||||
GUIFilter.compileOpenGuiFilter(hopper);
|
GUIFilter.compileOpenGuiFilter(hopper);
|
||||||
GUIAutoSellFilter.compileOpenAutoSellFilter(hopper);
|
GUIAutoSellFilter.compileOpenAutoSellFilter(hopper);
|
||||||
|
@ -73,7 +73,7 @@ public class HopperListeners implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
HopperImpl toHopper = this.plugin.getHopperManager().getHopper(destinationLocation);
|
HopperImpl toHopper = this.plugin.getHopperManager().getHopper(destinationLocation, null);
|
||||||
// minecraft 1.8 doesn't have a method to get the hopper's location from the inventory, so we use the holder instead
|
// minecraft 1.8 doesn't have a method to get the hopper's location from the inventory, so we use the holder instead
|
||||||
final ItemStack toMove = event.getItem();
|
final ItemStack toMove = event.getItem();
|
||||||
|
|
||||||
|
@ -38,12 +38,12 @@ public class InteractListeners implements Listener {
|
|||||||
Location location = player.getLocation().getBlock().getRelative(BlockFace.SELF).getLocation();
|
Location location = player.getLocation().getBlock().getRelative(BlockFace.SELF).getLocation();
|
||||||
Location down = location.getBlock().getRelative(BlockFace.DOWN).getLocation();
|
Location down = location.getBlock().getRelative(BlockFace.DOWN).getLocation();
|
||||||
if (this.plugin.getHopperManager().isHopper(down)) {
|
if (this.plugin.getHopperManager().isHopper(down)) {
|
||||||
HopperImpl hopper = this.plugin.getHopperManager().getHopper(down);
|
HopperImpl hopper = this.plugin.getHopperManager().getHopper(down, player.getUniqueId());
|
||||||
if (hopper.getTeleportTrigger() == TeleportTrigger.SNEAK) {
|
if (hopper.getTeleportTrigger() == TeleportTrigger.SNEAK) {
|
||||||
this.plugin.getTeleportHandler().tpEntity(player, hopper);
|
this.plugin.getTeleportHandler().tpEntity(player, hopper);
|
||||||
}
|
}
|
||||||
} else if (this.plugin.getHopperManager().isHopper(location)) {
|
} else if (this.plugin.getHopperManager().isHopper(location)) {
|
||||||
HopperImpl hopper = this.plugin.getHopperManager().getHopper(location);
|
HopperImpl hopper = this.plugin.getHopperManager().getHopper(location, player.getUniqueId());
|
||||||
if (hopper.getTeleportTrigger() == TeleportTrigger.SNEAK) {
|
if (hopper.getTeleportTrigger() == TeleportTrigger.SNEAK) {
|
||||||
this.plugin.getTeleportHandler().tpEntity(player, hopper);
|
this.plugin.getTeleportHandler().tpEntity(player, hopper);
|
||||||
}
|
}
|
||||||
@ -90,7 +90,7 @@ public class InteractListeners implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
HopperImpl hopper = this.plugin.getHopperManager().getHopper(event.getClickedBlock());
|
HopperImpl hopper = this.plugin.getHopperManager().getHopper(event.getClickedBlock(), player.getUniqueId());
|
||||||
if (!player.getInventory().getItemInHand().getType().name().contains("PICKAXE")) {
|
if (!player.getInventory().getItemInHand().getType().name().contains("PICKAXE")) {
|
||||||
if (hopper.prepareForOpeningOverviewGui(player)) {
|
if (hopper.prepareForOpeningOverviewGui(player)) {
|
||||||
this.plugin.getGuiManager().showGUI(player, new GUIOverview(this.plugin, hopper, player));
|
this.plugin.getGuiManager().showGUI(player, new GUIOverview(this.plugin, hopper, player));
|
||||||
|
Loading…
Reference in New Issue
Block a user