mirror of
https://github.com/GTNewHorizons/StorageDrawers.git
synced 2026-10-26 14:24:33 +00:00
Add Backhand Support for Storage Drawers (#47)
This commit is contained in:
1 parent
464add34bf
commit
84987ce834
7 files changed
+107
-41
No files matched your search
@@ -10,4 +10,5 @@ dependencies {
|
||||
compileOnly('curse.maven:refined-relocation-75811:2262970')
|
||||
compileOnly('curse.maven:minetweaker3-224029:2255759')
|
||||
compileOnly("com.github.GTNewHorizons:Avaritia:1.73:dev")
|
||||
compileOnly("com.github.GTNewHorizons:Backhand:1.6.39:dev")
|
||||
}
|
||||
@@ -7,4 +7,6 @@ public interface IIntegrationConfig {
|
||||
boolean isChiselEnabled();
|
||||
|
||||
boolean isGTNHEnabled();
|
||||
|
||||
boolean isBackhandEnabled();
|
||||
}
|
||||
@@ -24,10 +24,12 @@ import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.LockAttribute
|
||||
import com.jaquadro.minecraft.storagedrawers.block.tile.TileEntityController;
|
||||
import com.jaquadro.minecraft.storagedrawers.core.ModCreativeTabs;
|
||||
import com.jaquadro.minecraft.storagedrawers.core.ModItems;
|
||||
import com.jaquadro.minecraft.storagedrawers.integration.BackhandIntegrationModule;
|
||||
import com.jaquadro.minecraft.storagedrawers.item.ItemPersonalKey;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import xonin.backhand.api.core.BackhandUtils;
|
||||
|
||||
public class BlockController extends BlockContainer implements INetworked {
|
||||
|
||||
@@ -122,6 +124,10 @@ public class BlockController extends BlockContainer implements INetworked {
|
||||
TileEntityController te = getTileEntitySafe(world, x, y, z);
|
||||
ItemStack item = player.inventory.getCurrentItem();
|
||||
|
||||
if (BackhandIntegrationModule.isEnabled() && BackhandUtils.getOffhandItem(player) != null && item == null) {
|
||||
if ((BackhandUtils.useOffhandItem(player, () -> true))) return false;
|
||||
}
|
||||
|
||||
if (item != null && item.getItem() != null) {
|
||||
if (item.getItem() == ModItems.shroudKey) {
|
||||
if (!world.isRemote) te.toggleShroud(player.getGameProfile());
|
||||
|
||||
@@ -56,6 +56,7 @@ import com.jaquadro.minecraft.storagedrawers.block.tile.TileEntityDrawersStandar
|
||||
import com.jaquadro.minecraft.storagedrawers.core.ModCreativeTabs;
|
||||
import com.jaquadro.minecraft.storagedrawers.core.ModItems;
|
||||
import com.jaquadro.minecraft.storagedrawers.core.handlers.GuiHandler;
|
||||
import com.jaquadro.minecraft.storagedrawers.integration.BackhandIntegrationModule;
|
||||
import com.jaquadro.minecraft.storagedrawers.item.ItemPersonalKey;
|
||||
import com.jaquadro.minecraft.storagedrawers.item.ItemTrim;
|
||||
import com.jaquadro.minecraft.storagedrawers.item.ItemUpgrade;
|
||||
@@ -69,6 +70,7 @@ import cpw.mods.fml.common.Optional;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import fox.spiteful.avaritia.items.ItemMatterCluster;
|
||||
import xonin.backhand.api.core.BackhandUtils;
|
||||
|
||||
public class BlockDrawers extends BlockContainer implements IExtendedBlockClickHandler, INetworked {
|
||||
|
||||
@@ -314,6 +316,11 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH
|
||||
|
||||
if (itemStack.hasDisplayName()) tile.setInventoryName(itemStack.getDisplayName());
|
||||
|
||||
if (BackhandIntegrationModule.isEnabled() && entity instanceof EntityPlayer) {
|
||||
ItemStack offhandItem = BackhandUtils.getOffhandItem((EntityPlayer) entity);
|
||||
useKey(tile, (EntityPlayer) entity, offhandItem, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
if (world.isRemote) {
|
||||
tile.invalidate();
|
||||
world.markBlockForUpdate(x, y, z);
|
||||
@@ -331,6 +338,10 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH
|
||||
TileEntityDrawers tileDrawers = getTileEntitySafe(world, x, y, z);
|
||||
ItemStack item = player.inventory.getCurrentItem();
|
||||
|
||||
if (BackhandIntegrationModule.isEnabled() && BackhandUtils.getOffhandItem(player) != null && item == null) {
|
||||
if ((BackhandUtils.useOffhandItem(player, () -> true))) return false;
|
||||
}
|
||||
|
||||
if (!SecurityManager.hasAccess(player.getGameProfile(), tileDrawers)) return false;
|
||||
|
||||
if (StorageDrawers.config.cache.debugTrace) {
|
||||
@@ -369,47 +380,9 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH
|
||||
}
|
||||
|
||||
return true;
|
||||
} else
|
||||
if (item.getItem() == ModItems.upgradeLock) {
|
||||
boolean locked = tileDrawers.isLocked(LockAttribute.LOCK_POPULATED);
|
||||
|
||||
if (locked) {
|
||||
int slot = getDrawerSlot(side, hitX, hitY, hitZ);
|
||||
IDrawer drawer = tileDrawers.getDrawer(slot);
|
||||
if (drawer != null) {
|
||||
ItemStack stack = drawer.getStoredItemPrototype();
|
||||
int count = drawer.getStoredItemCount();
|
||||
|
||||
if (stack != null && count == 0) {
|
||||
drawer.setStoredItemRedir(null, 0);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (useKey(tileDrawers, player, item, side, hitX, hitY, hitZ)) return true;
|
||||
}
|
||||
tileDrawers.setLocked(LockAttribute.LOCK_POPULATED, !locked);
|
||||
tileDrawers.setLocked(LockAttribute.LOCK_EMPTY, !locked);
|
||||
|
||||
return true;
|
||||
} else if (item.getItem() == ModItems.shroudKey) {
|
||||
tileDrawers.setIsShrouded(!tileDrawers.isShrouded());
|
||||
return true;
|
||||
} else if (item.getItem() == ModItems.quantifyKey) {
|
||||
tileDrawers.setIsQuantified(!tileDrawers.isQuantified());
|
||||
return true;
|
||||
} else if (item.getItem() instanceof ItemPersonalKey) {
|
||||
String securityKey = ((ItemPersonalKey) item.getItem())
|
||||
.getSecurityProviderKey(item.getItemDamage());
|
||||
ISecurityProvider provider = StorageDrawers.securityRegistry.getProvider(securityKey);
|
||||
|
||||
if (tileDrawers.getOwner() == null) {
|
||||
tileDrawers.setOwner(player.getPersistentID());
|
||||
tileDrawers.setSecurityProvider(provider);
|
||||
} else if (SecurityManager.hasOwnership(player.getGameProfile(), tileDrawers)) {
|
||||
tileDrawers.setOwner(null);
|
||||
tileDrawers.setSecurityProvider(null);
|
||||
} else return false;
|
||||
return true;
|
||||
} else if (item.getItem() == ModItems.tape) return false;
|
||||
} else if (item == null && player.isSneaking()) {
|
||||
if (tileDrawers.isSealed()) {
|
||||
tileDrawers.setIsSealed(false);
|
||||
@@ -432,10 +405,55 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH
|
||||
int countAdded = tileDrawers.interactPutItemsIntoSlot(slot, player);
|
||||
if (countAdded > 0 && currentStack != null) world.markBlockForUpdate(x, y, z);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean useKey(TileEntityDrawers tileDrawers, EntityPlayer player, ItemStack item, int side, float hitX,
|
||||
float hitY, float hitZ) {
|
||||
if (item != null && item.getItem() != null) {
|
||||
if (item.getItem() == ModItems.upgradeLock) {
|
||||
boolean locked = tileDrawers.isLocked(LockAttribute.LOCK_POPULATED);
|
||||
|
||||
if (locked) {
|
||||
int slot = getDrawerSlot(side, hitX, hitY, hitZ);
|
||||
IDrawer drawer = tileDrawers.getDrawer(slot);
|
||||
if (drawer != null) {
|
||||
ItemStack stack = drawer.getStoredItemPrototype();
|
||||
int count = drawer.getStoredItemCount();
|
||||
|
||||
if (stack != null && count == 0) {
|
||||
drawer.setStoredItemRedir(null, 0);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
tileDrawers.setLocked(LockAttribute.LOCK_POPULATED, !locked);
|
||||
tileDrawers.setLocked(LockAttribute.LOCK_EMPTY, !locked);
|
||||
|
||||
return true;
|
||||
} else if (item.getItem() == ModItems.shroudKey) {
|
||||
tileDrawers.setIsShrouded(!tileDrawers.isShrouded());
|
||||
return true;
|
||||
} else if (item.getItem() == ModItems.quantifyKey) {
|
||||
tileDrawers.setIsQuantified(!tileDrawers.isQuantified());
|
||||
return true;
|
||||
} else if (item.getItem() instanceof ItemPersonalKey) {
|
||||
String securityKey = ((ItemPersonalKey) item.getItem()).getSecurityProviderKey(item.getItemDamage());
|
||||
ISecurityProvider provider = StorageDrawers.securityRegistry.getProvider(securityKey);
|
||||
|
||||
if (tileDrawers.getOwner() == null) {
|
||||
tileDrawers.setOwner(player.getPersistentID());
|
||||
tileDrawers.setSecurityProvider(provider);
|
||||
} else if (SecurityManager.hasOwnership(player.getGameProfile(), tileDrawers)) {
|
||||
tileDrawers.setOwner(null);
|
||||
tileDrawers.setSecurityProvider(null);
|
||||
} else return false;
|
||||
return true;
|
||||
} else if (item.getItem() == ModItems.tape) return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
protected int getDrawerSlot(int side, float hitX, float hitY, float hitZ) {
|
||||
if (drawerCount == 1) return 0;
|
||||
if (drawerCount == 2) return hitTop(hitY) ? 0 : 1;
|
||||
|
||||
@@ -83,6 +83,7 @@ public class ConfigManager {
|
||||
public boolean enableThermalFoundationIntegration;
|
||||
public boolean enableChiselIntegration;
|
||||
public boolean enableGTNHIntegration;
|
||||
public boolean enableBackhandIntegration;
|
||||
public boolean autoEnablePacks;
|
||||
public boolean enableNaturaPack;
|
||||
public boolean enableBopPack;
|
||||
@@ -187,6 +188,11 @@ public class ConfigManager {
|
||||
public boolean isGTNHEnabled() {
|
||||
return cache.enableGTNHIntegration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBackhandEnabled() {
|
||||
return cache.enableBackhandIntegration;
|
||||
}
|
||||
}
|
||||
|
||||
private class PacksConfig implements IPacksConfig {
|
||||
@@ -425,6 +431,8 @@ public class ConfigManager {
|
||||
.setLanguageKey(LANG_PREFIX + "integration.enableChisel").setRequiresMcRestart(true).getBoolean();
|
||||
cache.enableGTNHIntegration = config.get(sectionIntegration.getQualifiedName(), "enableGTNH", true)
|
||||
.setLanguageKey(LANG_PREFIX + "integration.enableGTNH").setRequiresMcRestart(true).getBoolean();
|
||||
cache.enableBackhandIntegration = config.get(sectionIntegration.getQualifiedName(), "enableBackhand", true)
|
||||
.setLanguageKey(LANG_PREFIX + "integration.enableBackhand").setRequiresMcRestart(true).getBoolean();
|
||||
|
||||
cache.autoEnablePacks = config.get(
|
||||
sectionPacks.getQualifiedName(),
|
||||
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.integration;
|
||||
|
||||
import com.jaquadro.minecraft.storagedrawers.StorageDrawers;
|
||||
|
||||
import cpw.mods.fml.common.Loader;
|
||||
|
||||
public class BackhandIntegrationModule extends IntegrationModule {
|
||||
|
||||
private static final boolean BACKHAND_ENABLED = Loader.isModLoaded("backhand")
|
||||
&& StorageDrawers.config.integrationConfig.isBackhandEnabled();
|
||||
|
||||
@Override
|
||||
public String getModID() {
|
||||
return "backhand";
|
||||
}
|
||||
|
||||
public static boolean isEnabled() {
|
||||
return BACKHAND_ENABLED;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init() throws Throwable {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postInit() {
|
||||
|
||||
}
|
||||
}
|
||||
+1
@@ -34,6 +34,7 @@ public class IntegrationRegistry {
|
||||
reg.add(new ThermalFoundation());
|
||||
if (ChiselIntegrationModule.isEnabled()) reg.add(new ChiselIntegrationModule());
|
||||
if (GTNHIntegrationModule.isEnabled()) reg.add(new GTNHIntegrationModule());
|
||||
if (BackhandIntegrationModule.isEnabled()) reg.add(new BackhandIntegrationModule());
|
||||
}
|
||||
|
||||
private IntegrationRegistry() {
|
||||
|
||||
Reference in new issue
Block a user