mirror of
https://github.com/TotalFreedomMC/OpenInv.git
synced 2024-06-15 08:01:33 +00:00
84 lines
2.9 KiB
Java
84 lines
2.9 KiB
Java
/*
|
|
* Copyright (C) 2011-2020 lishid. All rights reserved.
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, version 3.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
package com.lishid.openinv.internal.v1_8_R3;
|
|
|
|
import com.lishid.openinv.internal.ISpecialEnderChest;
|
|
import java.lang.reflect.Field;
|
|
import net.minecraft.server.v1_8_R3.EntityPlayer;
|
|
import net.minecraft.server.v1_8_R3.IInventory;
|
|
import net.minecraft.server.v1_8_R3.InventoryEnderChest;
|
|
import net.minecraft.server.v1_8_R3.InventorySubcontainer;
|
|
import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.inventory.Inventory;
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest {
|
|
|
|
private final InventoryEnderChest enderChest;
|
|
private final CraftInventory inventory = new CraftInventory(this);
|
|
private boolean playerOnline;
|
|
|
|
public SpecialEnderChest(Player player, Boolean online) {
|
|
super(PlayerDataManager.getHandle(player).getEnderChest().getName(),
|
|
PlayerDataManager.getHandle(player).getEnderChest().hasCustomName(),
|
|
PlayerDataManager.getHandle(player).getEnderChest().getSize());
|
|
this.playerOnline = online;
|
|
EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player);
|
|
this.enderChest = nmsPlayer.getEnderChest();
|
|
this.bukkitOwner = nmsPlayer.getBukkitEntity();
|
|
this.items = enderChest.getContents();
|
|
}
|
|
|
|
@Override
|
|
public @NotNull Inventory getBukkitInventory() {
|
|
return inventory;
|
|
}
|
|
|
|
@Override
|
|
public void setPlayerOnline(@NotNull Player player) {
|
|
if (!playerOnline) {
|
|
try {
|
|
EntityPlayer nmsPlayer = PlayerDataManager.getHandle(player);
|
|
this.bukkitOwner = nmsPlayer.getBukkitEntity();
|
|
InventoryEnderChest playerEnderChest = nmsPlayer.getEnderChest();
|
|
Field field = playerEnderChest.getClass().getField("items");
|
|
field.setAccessible(true);
|
|
field.set(playerEnderChest, this.items);
|
|
} catch (Exception ignored) {}
|
|
playerOnline = true;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void setPlayerOffline() {
|
|
playerOnline = false;
|
|
}
|
|
|
|
@Override
|
|
public boolean isInUse() {
|
|
return !this.getViewers().isEmpty();
|
|
}
|
|
|
|
@Override
|
|
public void update() {
|
|
super.update();
|
|
enderChest.update();
|
|
}
|
|
|
|
}
|