Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class WarpPipeBlockEntity extends BlockEntity implements MenuProvider {
- public int dest0Posx=0,dest0Posy=0,dest0Posz=0;
- public int dest1Posx=0,dest1Posy=0,dest1Posz=0;
- public int dest2Posx=0,dest2Posy=0,dest2Posz=0;
- public int dest3Posx=0,dest3Posy=0,dest3Posz=0;
- public int dest4Posx=0,dest4Posy=0,dest4Posz=0;
- public int dest5Posx=0,dest5Posy=0,dest5Posz=0;
- public int dest6Posx=0,dest6Posy=0,dest6Posz=0;
- public int dest7Posx=0,dest7Posy=0,dest7Posz=0;
- public String dest0name="",dest1name="",dest2name="",dest3name="",dest4name="",dest5name="",dest6name="",dest7name="";
- public boolean dest0exists = false;
- public boolean dest1exists = false;
- public boolean dest2exists = false;
- public boolean dest3exists = false;
- public boolean dest4exists = false;
- public boolean dest5exists = false;
- public boolean dest6exists = false;
- public boolean dest7exists = false;
- public String dest0dim="",dest1dim="",dest2dim="",dest3dim="",dest4dim="",dest5dim="",dest6dim="",dest7dim="";
- private boolean worksThroughDimensions = false;
- public String dimName = "";
- public int selectedWheelPart = -1;
- public final ItemStackHandler itemHandler = new ItemStackHandler(Constants.TELEPORTER_TOTALSLOTS) {
- @Override
- protected void onContentsChanged(int slot) {
- setChanged();
- };
- };
- public WarpPipeBlockEntity(BlockPos pos, BlockState state) {
- super(ModBlockEntities.WARPPIPE_BLOCKENTITY.get(), pos, state);
- }
- public void setPosX(int pos, int dest) {
- if(dest == 0) {
- dest0Posx = pos;
- } else if(dest == 1) {
- dest1Posx = pos;
- } else if(dest == 2) {
- dest2Posx = pos;
- } else if(dest == 3) {
- dest3Posx = pos;
- } else if(dest == 4) {
- dest4Posx = pos;
- } else if(dest == 5) {
- dest5Posx = pos;
- } else if(dest == 6) {
- dest6Posx = pos;
- } else if(dest == 7) {
- dest7Posx = pos;
- }
- }
- public void setPosY(int pos, int dest) {
- if(dest == 0) {
- dest0Posy = pos;
- } else if(dest == 1) {
- dest1Posy = pos;
- } else if(dest == 2) {
- dest2Posy = pos;
- } else if(dest == 3) {
- dest3Posy = pos;
- } else if(dest == 4) {
- dest4Posy = pos;
- } else if(dest == 5) {
- dest5Posy = pos;
- } else if(dest == 6) {
- dest6Posy = pos;
- } else if(dest == 7) {
- dest7Posy = pos;
- }
- }
- public void setPosZ(int pos, int dest) {
- if(dest == 0) {
- dest0Posz = pos;
- } else if(dest == 1) {
- dest1Posz = pos;
- } else if(dest == 2) {
- dest2Posz = pos;
- } else if(dest == 3) {
- dest3Posz = pos;
- } else if(dest == 4) {
- dest4Posz = pos;
- } else if(dest == 5) {
- dest5Posz = pos;
- } else if(dest == 6) {
- dest6Posz = pos;
- } else if(dest == 7) {
- dest7Posz = pos;
- }
- }
- public void setDestName(int dest, String name) {
- if(dest == 0) {
- dest0name = name;
- } else if(dest == 1) {
- dest1name = name;
- } else if(dest == 2) {
- dest2name = name;
- } else if(dest == 3) {
- dest3name = name;
- } else if(dest == 4) {
- dest4name = name;
- } else if(dest == 5) {
- dest5name = name;
- } else if(dest == 6) {
- dest6name = name;
- } else if(dest == 7) {
- dest7name = name;
- }
- }
- public void setDestDimension(int dest, String dim) {
- if(dest == 0) {
- dest0dim = dim;
- } else if(dest == 1) {
- dest1dim = dim;
- } else if(dest == 2) {
- dest2dim = dim;
- } else if(dest == 3) {
- dest3dim = dim;
- } else if(dest == 4) {
- dest4dim = dim;
- } else if(dest == 5) {
- dest5dim = dim;
- } else if(dest == 6) {
- dest6dim = dim;
- } else if(dest == 7) {
- dest7dim = dim;
- }
- }
- public void setDestExists(int dest, boolean exists) {
- if(dest == 0) {
- dest0exists = exists;
- } else if(dest == 1) {
- dest1exists = exists;
- } else if(dest == 2) {
- dest2exists = exists;
- } else if(dest == 3) {
- dest3exists = exists;
- } else if(dest == 4) {
- dest4exists = exists;
- } else if(dest == 5) {
- dest5exists = exists;
- } else if(dest == 6) {
- dest6exists = exists;
- } else if(dest == 7) {
- dest7exists = exists;
- }
- }
- public void setSelectedWheelPart(int part) {
- selectedWheelPart = part;
- }
- public boolean getDimensionWork() {
- return this.worksThroughDimensions;
- }
- public String getDimName() {
- return this.dimName;
- }
- public void setDimensionName(String dimensionName) {
- this.dimName = dimensionName;
- }
- private LazyOptional<IItemHandler> lazyItemHandler = LazyOptional.empty();
- @Override
- public AbstractContainerMenu createMenu(int id, Inventory inv, Player player) {
- ModMessages.sendToClients(new PacketSyncTeleporterPosToClient(
- this.dest0dim,
- this.dest1dim,
- this.dest2dim,
- this.dest3dim,
- this.dest4dim,
- this.dest5dim,
- this.dest6dim,
- this.dest7dim,
- this.dest0exists,
- this.dest1exists,
- this.dest2exists,
- this.dest3exists,
- this.dest4exists,
- this.dest5exists,
- this.dest6exists,
- this.dest7exists,
- this.dest0name,
- this.dest1name,
- this.dest2name,
- this.dest3name,
- this.dest4name,
- this.dest5name,
- this.dest6name,
- this.dest7name,
- this.selectedWheelPart,
- this.dest0Posx,this.dest0Posy,this.dest0Posz,
- this.dest1Posx,this.dest1Posy,this.dest1Posz,
- this.dest2Posx,this.dest2Posy,this.dest2Posz,
- this.dest3Posx,this.dest3Posy,this.dest3Posz,
- this.dest4Posx,this.dest4Posy,this.dest4Posz,
- this.dest5Posx,this.dest5Posy,this.dest5Posz,
- this.dest6Posx,this.dest6Posy,this.dest6Posz,
- this.dest7Posx,this.dest7Posy,this.dest7Posz,
- this.dimName,this.worldPosition));
- return new TeleporterMenu(id, inv, this);
- }
- @Override
- public Component getDisplayName() {
- return new TextComponent("");
- }
- @Nonnull
- @Override
- public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @javax.annotation.Nullable Direction side) {
- if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
- return lazyItemHandler.cast();
- }
- return super.getCapability(cap, side);
- }
- @Override
- public void onLoad() {
- super.onLoad();
- lazyItemHandler = LazyOptional.of(() -> itemHandler);
- ModMessages.sendToClients(new PacketSyncTeleporterPosToClient(
- dest0dim,
- dest1dim,
- dest2dim,
- dest3dim,
- dest4dim,
- dest5dim,
- dest6dim,
- dest7dim,
- dest0exists,
- dest1exists,
- dest2exists,
- dest3exists,
- dest4exists,
- dest5exists,
- dest6exists,
- dest7exists,
- dest0name,
- dest1name,
- dest2name,
- dest3name,
- dest4name,
- dest5name,
- dest6name,
- dest7name,
- selectedWheelPart,
- dest0Posx,dest0Posy,dest0Posz,
- dest1Posx,dest1Posy,dest1Posz,
- dest2Posx,dest2Posy,dest2Posz,
- dest3Posx,dest3Posy,dest3Posz,
- dest4Posx,dest4Posy,dest4Posz,
- dest5Posx,dest5Posy,dest5Posz,
- dest6Posx,dest6Posy,dest6Posz,
- dest7Posx,dest7Posy,dest7Posz,
- dimName,worldPosition));
- }
- @Override
- public void invalidateCaps() {
- super.invalidateCaps();
- lazyItemHandler.invalidate();
- }
- @Override
- protected void saveAdditional(@NotNull CompoundTag tag) {
- super.saveAdditional(tag);
- tag.put("inventory", itemHandler.serializeNBT());
- tag.putInt("selected", selectedWheelPart);
- tag.putString("dest0name", dest0name);
- tag.putString("dest1name", dest1name);
- tag.putString("dest2name", dest2name);
- tag.putString("dest3name", dest3name);
- tag.putString("dest4name", dest4name);
- tag.putString("dest5name", dest5name);
- tag.putString("dest6name", dest6name);
- tag.putString("dest7name", dest7name);
- tag.putString("dest0dim", dest0dim);
- tag.putString("dest1dim", dest1dim);
- tag.putString("dest2dim", dest2dim);
- tag.putString("dest3dim", dest3dim);
- tag.putString("dest4dim", dest4dim);
- tag.putString("dest5dim", dest5dim);
- tag.putString("dest6dim", dest6dim);
- tag.putString("dest7dim", dest7dim);
- tag.putBoolean("dest0exists", dest0exists);
- tag.putBoolean("dest1exists", dest1exists);
- tag.putBoolean("dest2exists", dest2exists);
- tag.putBoolean("dest3exists", dest3exists);
- tag.putBoolean("dest4exists", dest4exists);
- tag.putBoolean("dest5exists", dest5exists);
- tag.putBoolean("dest6exists", dest6exists);
- tag.putBoolean("dest7exists", dest7exists);
- tag.putBoolean("worksThroughDimensions", worksThroughDimensions);
- tag.putInt("dest0posx", dest0Posx);tag.putInt("dest0posy", dest0Posy);tag.putInt("dest0posz", dest0Posz);
- tag.putInt("dest1posx", dest1Posx);tag.putInt("dest1posy", dest1Posy);tag.putInt("dest1posz", dest1Posz);
- tag.putInt("dest2posx", dest2Posx);tag.putInt("dest2posy", dest2Posy);tag.putInt("dest2posz", dest2Posz);
- tag.putInt("dest3posx", dest3Posx);tag.putInt("dest3posy", dest3Posy);tag.putInt("dest3posz", dest3Posz);
- tag.putInt("dest4posx", dest4Posx);tag.putInt("dest4posy", dest4Posy);tag.putInt("dest4posz", dest4Posz);
- tag.putInt("dest5posx", dest5Posx);tag.putInt("dest5posy", dest5Posy);tag.putInt("dest5posz", dest5Posz);
- tag.putInt("dest6posx", dest6Posx);tag.putInt("dest6posy", dest6Posy);tag.putInt("dest6posz", dest6Posz);
- tag.putInt("dest7posx", dest7Posx);tag.putInt("dest7posy", dest7Posy);tag.putInt("dest7posz", dest7Posz);
- }
- @Override
- public void load(CompoundTag tag) {
- super.load(tag);
- itemHandler.deserializeNBT(tag.getCompound("inventory"));
- dimName = tag.getString("dim");
- worksThroughDimensions = tag.getBoolean("worksThroughDimensions");
- selectedWheelPart = tag.getInt("selected");
- dest0name = tag.getString("dest0name");
- dest1name = tag.getString("dest1name");
- dest2name = tag.getString("dest2name");
- dest3name = tag.getString("dest3name");
- dest4name = tag.getString("dest4name");
- dest5name = tag.getString("dest5name");
- dest6name = tag.getString("dest6name");
- dest7name = tag.getString("dest7name");
- dest0dim = tag.getString("dest0dim");
- dest1dim = tag.getString("dest1dim");
- dest2dim = tag.getString("dest2dim");
- dest3dim = tag.getString("dest3dim");
- dest4dim = tag.getString("dest4dim");
- dest5dim = tag.getString("dest5dim");
- dest6dim = tag.getString("dest6dim");
- dest7dim = tag.getString("dest7dim");
- dest0exists = tag.getBoolean("dest0exists");
- dest1exists = tag.getBoolean("dest1exists");
- dest2exists = tag.getBoolean("dest2exists");
- dest3exists = tag.getBoolean("dest3exists");
- dest4exists = tag.getBoolean("dest4exists");
- dest5exists = tag.getBoolean("dest5exists");
- dest6exists = tag.getBoolean("dest6exists");
- dest7exists = tag.getBoolean("dest7exists");
- dest0Posx=tag.getInt("dest0posx");dest0Posy = tag.getInt("dest0posy");dest0Posz = tag.getInt("dest0posz");
- dest1Posx=tag.getInt("dest1posx");dest1Posy = tag.getInt("dest1posy");dest1Posz = tag.getInt("dest1posz");
- dest2Posx=tag.getInt("dest2posx");dest2Posy = tag.getInt("dest2posy");dest2Posz = tag.getInt("dest2posz");
- dest3Posx=tag.getInt("dest3posx");dest3Posy = tag.getInt("dest3posy");dest3Posz = tag.getInt("dest3posz");
- dest4Posx=tag.getInt("dest4posx");dest4Posy = tag.getInt("dest4posy");dest4Posz = tag.getInt("dest4posz");
- dest5Posx=tag.getInt("dest5posx");dest5Posy = tag.getInt("dest5posy");dest5Posz = tag.getInt("dest5posz");
- dest7Posx=tag.getInt("dest6posx");dest6Posy = tag.getInt("dest6posy");dest6Posz = tag.getInt("dest6posz");
- dest7Posx=tag.getInt("dest7posx");dest7Posy = tag.getInt("dest7posy");dest7Posz = tag.getInt("dest7posz");
- }
- public void drops() {
- SimpleContainer inventory = new SimpleContainer(itemHandler.getSlots());
- for (int i = 0; i < itemHandler.getSlots(); i++) {
- inventory.setItem(i, itemHandler.getStackInSlot(i));
- }
- Containers.dropContents(this.level, this.worldPosition, inventory);
- }
- public void setItemToSlot(int slot, ItemStack stack) {
- stack.setCount(1);
- this.itemHandler.setStackInSlot(slot, stack);
- }
- public ItemStack getItemFromSlot(int slot) { return this.itemHandler.getStackInSlot(slot); }
- public boolean hasItemInSlot(ItemStack item, int slot) {
- return this.itemHandler.getStackInSlot(slot).sameItem(item);
- }
- public static void tick(Level level, BlockPos pPos, BlockState pState, WarpPipeBlockEntity blockEntity) {
- if(!level.isClientSide) {
- ChunkPos chunkPos = new ChunkPos(pPos);
- ResourceKey<Level> currentDimension = level.dimension();
- ServerLevel serverLevel = (ServerLevel)level.getServer().getLevel(currentDimension);
- ForgeChunkManager.forceChunk(serverLevel, Constants.MOD_ID, pPos, chunkPos.x,chunkPos.z,true,true);
- }
- if(blockEntity.selectedWheelPart == 0 || blockEntity.selectedWheelPart == 1 || blockEntity.selectedWheelPart == 2 || blockEntity.selectedWheelPart == 3 || blockEntity.selectedWheelPart == 4 || blockEntity.selectedWheelPart == 5 || blockEntity.selectedWheelPart == 6 || blockEntity.selectedWheelPart == 7) {
- level.getEntitiesOfClass(Player.class, new AABB(pPos.getX(), pPos.getY(), pPos.getZ(), pPos.getX() + 1, pPos.getY() + 1, pPos.getZ() + 1)).forEach(entity -> {
- if(!(entity instanceof Player)) return;
- if(!entity.isShiftKeyDown() || !entity.isCrouching()) return;
- if(blockEntity != null && blockEntity instanceof WarpPipeBlockEntity) {
- entity.playSound(SoundEvents.ENDERMAN_TELEPORT, 1, 1);
- if(!level.isClientSide) {
- entity.sendMessage(new TextComponent("Selected: "+blockEntity.selectedWheelPart),entity.getUUID());
- ServerPlayer player = (ServerPlayer)entity;
- if(blockEntity.selectedWheelPart == 0) {
- ResourceKey<Level> storedKey = ResourceKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation(blockEntity.dest0dim));
- ServerLevel storedWorld = ((ServerLevel)level).getServer().getLevel(storedKey);
- player.teleportTo(storedWorld, blockEntity.dest0Posx+0.5,blockEntity.dest0Posy+1,blockEntity.dest0Posz+0.5, player.getRespawnAngle(), player.getRespawnAngle());
- } else if(blockEntity.selectedWheelPart == 1) {
- ResourceKey<Level> storedKey = ResourceKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation(blockEntity.dest1dim));
- ServerLevel storedWorld = ((ServerLevel)level).getServer().getLevel(storedKey);
- player.teleportTo(storedWorld, blockEntity.dest1Posx+0.5,blockEntity.dest1Posy+1,blockEntity.dest1Posz+0.5, player.getRespawnAngle(), player.getRespawnAngle());
- }else if(blockEntity.selectedWheelPart == 2) {
- ResourceKey<Level> storedKey = ResourceKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation(blockEntity.dest2dim));
- ServerLevel storedWorld = ((ServerLevel)level).getServer().getLevel(storedKey);
- player.teleportTo(storedWorld, blockEntity.dest2Posx+0.5,blockEntity.dest2Posy+1,blockEntity.dest2Posz+0.5, player.getRespawnAngle(), player.getRespawnAngle());
- }else if(blockEntity.selectedWheelPart == 3) {
- ResourceKey<Level> storedKey = ResourceKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation(blockEntity.dest3dim));
- ServerLevel storedWorld = ((ServerLevel)level).getServer().getLevel(storedKey);
- player.teleportTo(storedWorld, blockEntity.dest3Posx+0.5,blockEntity.dest3Posy+1,blockEntity.dest3Posz+0.5, player.getRespawnAngle(), player.getRespawnAngle());
- }else if(blockEntity.selectedWheelPart == 4) {
- ResourceKey<Level> storedKey = ResourceKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation(blockEntity.dest4dim));
- ServerLevel storedWorld = ((ServerLevel)level).getServer().getLevel(storedKey);
- player.teleportTo(storedWorld, blockEntity.dest4Posx+0.5,blockEntity.dest4Posy+1,blockEntity.dest4Posz+0.5, player.getRespawnAngle(), player.getRespawnAngle());
- }else if(blockEntity.selectedWheelPart == 5) {
- ResourceKey<Level> storedKey = ResourceKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation(blockEntity.dest5dim));
- ServerLevel storedWorld = ((ServerLevel)level).getServer().getLevel(storedKey);
- player.teleportTo(storedWorld, blockEntity.dest5Posx+0.5,blockEntity.dest5Posy+1,blockEntity.dest5Posz+0.5, player.getRespawnAngle(), player.getRespawnAngle());
- }else if(blockEntity.selectedWheelPart == 6) {
- ResourceKey<Level> storedKey = ResourceKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation(blockEntity.dest6dim));
- ServerLevel storedWorld = ((ServerLevel)level).getServer().getLevel(storedKey);
- player.teleportTo(storedWorld, blockEntity.dest6Posx+0.5,blockEntity.dest6Posy+1,blockEntity.dest6Posz+0.5, player.getRespawnAngle(), player.getRespawnAngle());
- }else if(blockEntity.selectedWheelPart == 7) {
- ResourceKey<Level> storedKey = ResourceKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation(blockEntity.dest7dim));
- ServerLevel storedWorld = ((ServerLevel)level).getServer().getLevel(storedKey);
- player.teleportTo(storedWorld, blockEntity.dest7Posx+0.5,blockEntity.dest7Posy+1,blockEntity.dest7Posz+0.5, player.getRespawnAngle(), player.getRespawnAngle());
- } else {
- player.sendMessage(new TextComponent("No destination selected"), player.getUUID());
- }
- }
- for(int i = 0; i < 3; i++) entity.playSound(SoundEvents.ENDERMAN_TELEPORT, 1, 1);
- }
- });
- }
- }
- /*Synchronization to the client*/
- @Nullable
- @Override
- public Packet<ClientGamePacketListener> getUpdatePacket() {
- return ClientboundBlockEntityDataPacket.create(this);
- }
- @Override
- public CompoundTag getUpdateTag() {
- return this.saveWithoutMetadata();
- }
- @Override
- public void onDataPacket(Connection net, ClientboundBlockEntityDataPacket pkt) {
- super.onDataPacket(net, pkt);
- load(pkt.getTag());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement