Merge pull request #15 from GTNewHorizons/KeybindForRingOfLoki

Adds a keybind to the Ring of Loki
This commit is contained in:
Martin Robertz authored and GitHub committed 2022-09-15 22:22:52 +02:00
commit 9e0c82ce36
10 files changed
+160 -5

No files matched your search

+1
View File
@@ -10,6 +10,7 @@ dependencies {
compileOnly('com.github.GTNewHorizons:ForgeMultipart:1.2.7:dev') {transitive=false}
compileOnly('com.github.GTNewHorizons:NotEnoughItems:2.2.7-GTNH:dev')
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.27:api') {transitive=false}
compile('com.github.GTNewHorizons:GTNHLib:0.0.4:dev')
compileOnly('curse.maven:cofh-lib-220333:2388748')
compileOnly('curse.maven:minefactory-reloaded-66672:2366150')
@@ -0,0 +1,36 @@
package vazkii.botania.client.core.handler;
import net.minecraft.client.settings.KeyBinding;
import vazkii.botania.common.network.PacketHandler;
import vazkii.botania.common.network.PacketLokiToggle;
import cpw.mods.fml.client.registry.ClientRegistry;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.InputEvent;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class KeyHandler {
private static final KeyBinding keyToggleRingOfLoki= new KeyBinding("botaniamisc.toggleLoki", 0, "botaniamisc.keyCategory");
public KeyHandler() {
FMLCommonHandler.instance().bus().register(this);
ClientRegistry.registerKeyBinding(keyToggleRingOfLoki);
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void key(InputEvent.KeyInputEvent event){
checkAndPerformKeyActions();
}
private void checkAndPerformKeyActions(){
if (keyToggleRingOfLoki.isPressed()){
toggleRingLoki();
}
}
private static void toggleRingLoki() {
PacketHandler.INSTANCE.sendToServer(new PacketLokiToggle());
}
}
@@ -55,6 +55,7 @@ import vazkii.botania.client.core.handler.PersistentVariableHelper;
import vazkii.botania.client.core.handler.SubTileRadiusRenderHandler;
import vazkii.botania.client.core.handler.TooltipHandler;
import vazkii.botania.client.core.helper.ShaderHelper;
import vazkii.botania.client.core.handler.KeyHandler;
import vazkii.botania.client.fx.FXSparkle;
import vazkii.botania.client.fx.FXWisp;
import vazkii.botania.client.gui.lexicon.GuiLexicon;
@@ -219,6 +220,7 @@ public class ClientProxy extends CommonProxy {
MinecraftForge.EVENT_BUS.register(new SubTileRadiusRenderHandler());
MinecraftForge.EVENT_BUS.register(new MultiblockRenderHandler());
MinecraftForge.EVENT_BUS.register(new SkyblockRenderEvents());
MinecraftForge.EVENT_BUS.register(new KeyHandler());
FMLCommonHandler.instance().bus().register(new CorporeaAutoCompleteHandler());
if(ConfigHandler.enableSeasonalFeatures) {
@@ -63,7 +63,6 @@ public class Botania {
storageDrawersLoaded = Loader.isModLoaded("StorageDrawers");
lightHelper = coloredLightsLoaded ? new LightHelperColored() : new LightHelperVanilla();
proxy.preInit(event);
}
@EventHandler
@@ -79,6 +79,7 @@ import vazkii.botania.common.integration.etfuturum.ModBanners;
import vazkii.botania.common.item.ModItems;
import vazkii.botania.common.lexicon.LexiconData;
import vazkii.botania.common.network.GuiHandler;
import vazkii.botania.common.network.PacketHandler;
import vazkii.botania.common.world.SkyblockWorldEvents;
import vazkii.botania.common.world.WorldTypeSkyblock;
import cpw.mods.fml.common.FMLCommonHandler;
@@ -116,6 +117,8 @@ public class CommonProxy {
ModAchievements.init();
ModMultiblocks.init();
PacketHandler.initPackets();
if(Botania.etFuturumLoaded)
ModBanners.init();
@@ -13,6 +13,7 @@ package vazkii.botania.common.item.relic;
import java.util.ArrayList;
import java.util.List;
import com.gtnewhorizon.gtnhlib.GTNHLib;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
@@ -26,6 +27,8 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
@@ -58,6 +61,7 @@ public class ItemLokiRing extends ItemRelicBauble implements IExtendedWireframeC
private static final String TAG_X_ORIGIN = "xOrigin";
private static final String TAG_Y_ORIGIN = "yOrigin";
private static final String TAG_Z_ORIGIN = "zOrigin";
private static final String TAG_MODE = "mode";
public ItemLokiRing() {
super(LibItemNames.LOKI_RING);
@@ -89,7 +93,7 @@ public class ItemLokiRing extends ItemRelicBauble implements IExtendedWireframeC
int cost = Math.min(cursorCount, (int) Math.pow(Math.E, cursorCount * 0.25));
if(heldItemStack == null && event.action == Action.RIGHT_CLICK_BLOCK && player.isSneaking()) {
if(heldItemStack == null && event.action == Action.RIGHT_CLICK_BLOCK && player.isSneaking() && isRingEnabled(lokiRing)) {
if(originCoords.posY == -1 && lookPos != null) {
setOriginPos(lokiRing, lookPos.blockX, lookPos.blockY, lookPos.blockZ);
setCursorList(lokiRing, null);
@@ -121,7 +125,7 @@ public class ItemLokiRing extends ItemRelicBauble implements IExtendedWireframeC
}
}
}
} else if(heldItemStack != null && event.action == Action.RIGHT_CLICK_BLOCK && lookPos != null && player.isSneaking()) {
} else if(heldItemStack != null && event.action == Action.RIGHT_CLICK_BLOCK && lookPos != null && isRingEnabled(lokiRing)) {
for(ChunkCoordinates cursor : cursors) {
int x = lookPos.blockX + cursor.posX;
int y = lookPos.blockY + cursor.posY;
@@ -137,7 +141,23 @@ public class ItemLokiRing extends ItemRelicBauble implements IExtendedWireframeC
}
}
}
public static void toggleMode(ItemStack stack) {
stack.stackTagCompound.setBoolean(TAG_MODE,!stack.stackTagCompound.getBoolean(TAG_MODE));
}
@SideOnly(Side.CLIENT)
public static void renderHUDNotification(){
Minecraft mc = Minecraft.getMinecraft();
String text = getLokiModeText(getLokiRing(mc.thePlayer));
GTNHLib.proxy.printMessageAboveHotbar(text, 60, true, true);
}
public static String getLokiModeText(ItemStack stack){
return EnumChatFormatting.GOLD + StatCollector.translateToLocal("item.botania:lokiRing.name") + " " + (isRingEnabled(stack) ?
EnumChatFormatting.GREEN + StatCollector.translateToLocal("botaniamisc.lokiOn") :
EnumChatFormatting.RED + StatCollector.translateToLocal("botaniamisc.lokiOff"));
}
public static boolean isRingEnabled (final ItemStack stack){
return stack.stackTagCompound.getBoolean(TAG_MODE);
}
public static void breakOnAllCursors(EntityPlayer player, Item item, ItemStack stack, int x, int y, int z, int side) {
ItemStack lokiRing = getLokiRing(player);
if(lokiRing == null || player.worldObj.isRemote || !(item instanceof ISequentialBreaker))
@@ -206,7 +226,7 @@ public class ItemLokiRing extends ItemRelicBauble implements IExtendedWireframeC
return getLokiRing(player) == stack ? getOriginPos(stack) : null;
}
private static ItemStack getLokiRing(EntityPlayer player) {
public static ItemStack getLokiRing(EntityPlayer player) {
InventoryBaubles baubles = PlayerHandler.getPlayerBaubles(player);
ItemStack stack1 = baubles.getStackInSlot(1);
ItemStack stack2 = baubles.getStackInSlot(2);
@@ -0,0 +1,19 @@
package vazkii.botania.common.network;
import vazkii.botania.common.lib.LibMisc;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper;
import cpw.mods.fml.relauncher.Side;
public class PacketHandler {
private PacketHandler() {}
public static final SimpleNetworkWrapper INSTANCE =
NetworkRegistry.INSTANCE.newSimpleChannel(LibMisc.MOD_ID.toLowerCase());
public static void initPackets() {
INSTANCE.registerMessage(PacketLokiToggle.class, PacketLokiToggle.class, 1, Side.SERVER);
INSTANCE.registerMessage(PacketLokiToggleAck.class, PacketLokiToggleAck.class, 2, Side.CLIENT);
}
}
@@ -0,0 +1,34 @@
package vazkii.botania.common.network;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import vazkii.botania.common.item.relic.ItemLokiRing;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
public class PacketLokiToggle implements IMessage, IMessageHandler<PacketLokiToggle, IMessage> {
@Override
public void fromBytes(ByteBuf byteBuf) {
// not needed
}
@Override
public void toBytes(ByteBuf byteBuf) {
// not needed
}
@Override
public IMessage onMessage(PacketLokiToggle message, MessageContext ctx) {
EntityPlayerMP player = ctx.getServerHandler().playerEntity;
final ItemStack aRing = ItemLokiRing.getLokiRing(player);
if (aRing != null) {
ItemLokiRing.toggleMode(aRing);
PacketHandler.INSTANCE.sendTo(new PacketLokiToggleAck(), player);
}
return null;
}
}
@@ -0,0 +1,37 @@
package vazkii.botania.common.network;
import io.netty.buffer.ByteBuf;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import vazkii.botania.common.item.relic.ItemLokiRing;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class PacketLokiToggleAck implements IMessage, IMessageHandler<PacketLokiToggleAck, IMessage> {
@Override
public void fromBytes(ByteBuf byteBuf) {
// not needed
}
@Override
public void toBytes(ByteBuf byteBuf) {
// not needed
}
@SideOnly(Side.CLIENT)
@Override
public IMessage onMessage(PacketLokiToggleAck message, MessageContext ctx) {
Minecraft mc = Minecraft.getMinecraft();
final ItemStack aRing = ItemLokiRing.getLokiRing(mc.thePlayer) ;
if (aRing != null) {
ItemLokiRing.renderHUDNotification();
}
return null;
}
}
@@ -152,6 +152,10 @@ botaniamisc.altarRefill0=Right click with an empty hand to
botaniamisc.altarRefill1=add back the last recipe
botaniamisc.santaweaveInfo=Manaweave, changed up for the &cs&fe&ca&fs&co&fn
botaniamisc.enterToView=^ Press ENTER to view ^
botaniamisc.keyCategory=Botania
botaniamisc.toggleLoki=Toggle Ring of Loki
botaniamisc.lokiOn=On
botaniamisc.lokiOff=Off
# NEI INTEGRATION
botania.nei.brewery=Botanical Brewery