Fixed randomizer bag not opening. Fixed server crash.
This commit is contained in:
@@ -2,8 +2,11 @@ package nl.requios.effortlessbuilding;
|
|||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
import net.minecraft.inventory.container.Container;
|
||||||
|
import net.minecraft.inventory.container.ContainerType;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import net.minecraft.util.registry.Registry;
|
||||||
import net.minecraft.util.text.StringTextComponent;
|
import net.minecraft.util.text.StringTextComponent;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.common.capabilities.CapabilityManager;
|
import net.minecraftforge.common.capabilities.CapabilityManager;
|
||||||
@@ -24,7 +27,7 @@ import nl.requios.effortlessbuilding.capability.ModeCapabilityManager;
|
|||||||
import nl.requios.effortlessbuilding.capability.ModifierCapabilityManager;
|
import nl.requios.effortlessbuilding.capability.ModifierCapabilityManager;
|
||||||
import nl.requios.effortlessbuilding.command.CommandReach;
|
import nl.requios.effortlessbuilding.command.CommandReach;
|
||||||
import nl.requios.effortlessbuilding.compatibility.CompatHelper;
|
import nl.requios.effortlessbuilding.compatibility.CompatHelper;
|
||||||
import nl.requios.effortlessbuilding.gui.RandomizerBagGuiHandler;
|
import nl.requios.effortlessbuilding.gui.RandomizerBagContainer;
|
||||||
import nl.requios.effortlessbuilding.item.ItemRandomizerBag;
|
import nl.requios.effortlessbuilding.item.ItemRandomizerBag;
|
||||||
import nl.requios.effortlessbuilding.item.ItemReachUpgrade1;
|
import nl.requios.effortlessbuilding.item.ItemReachUpgrade1;
|
||||||
import nl.requios.effortlessbuilding.item.ItemReachUpgrade2;
|
import nl.requios.effortlessbuilding.item.ItemReachUpgrade2;
|
||||||
@@ -66,6 +69,7 @@ public class EffortlessBuilding
|
|||||||
ITEM_REACH_UPGRADE_3
|
ITEM_REACH_UPGRADE_3
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public static final ContainerType<RandomizerBagContainer> RANDOMIZER_BAG_CONTAINER = register("randomizer_bag", RandomizerBagContainer::new);
|
||||||
public static final ResourceLocation RANDOMIZER_BAG_GUI = new ResourceLocation(EffortlessBuilding.MODID, "randomizer_bag");
|
public static final ResourceLocation RANDOMIZER_BAG_GUI = new ResourceLocation(EffortlessBuilding.MODID, "randomizer_bag");
|
||||||
|
|
||||||
public EffortlessBuilding() {
|
public EffortlessBuilding() {
|
||||||
@@ -98,9 +102,6 @@ public class EffortlessBuilding
|
|||||||
//TODO 1.13 config
|
//TODO 1.13 config
|
||||||
// ConfigManager.sync(MODID, Config.Type.INSTANCE);
|
// ConfigManager.sync(MODID, Config.Type.INSTANCE);
|
||||||
|
|
||||||
//TODO 1.14 GUI
|
|
||||||
// ModLoadingContext.get().registerExtensionPoint(ExtensionPoint.GUIFACTORY, () -> RandomizerBagGuiHandler::openGui);
|
|
||||||
|
|
||||||
proxy.setup(event);
|
proxy.setup(event);
|
||||||
|
|
||||||
CompatHelper.setup();
|
CompatHelper.setup();
|
||||||
@@ -133,6 +134,9 @@ public class EffortlessBuilding
|
|||||||
CommandReach.register(event.getCommandDispatcher());
|
CommandReach.register(event.getCommandDispatcher());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static <T extends Container> ContainerType<T> register(String key, ContainerType.IFactory<T> factory) {
|
||||||
|
return Registry.register(Registry.MENU, key, new ContainerType<>(factory));
|
||||||
|
}
|
||||||
|
|
||||||
public static void log(String msg){
|
public static void log(String msg){
|
||||||
logger.info(msg);
|
logger.info(msg);
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
package nl.requios.effortlessbuilding;
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
import net.minecraftforge.client.event.TextureStitchEvent;
|
||||||
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
import nl.requios.effortlessbuilding.buildmode.BuildModes;
|
||||||
|
import nl.requios.effortlessbuilding.buildmode.ModeOptions;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
@Mod.EventBusSubscriber(bus=Mod.EventBusSubscriber.Bus.MOD, value = {Dist.CLIENT})
|
||||||
|
public class ModClientEventHandler {
|
||||||
|
|
||||||
|
private static final HashMap<BuildModes.BuildModeEnum, ResourceLocation> buildModeIcons = new HashMap<>();
|
||||||
|
private static final HashMap<ModeOptions.ActionEnum, ResourceLocation> modeOptionIcons = new HashMap<>();
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public static void onTextureStitch(final TextureStitchEvent.Pre event) {
|
||||||
|
//register icon textures
|
||||||
|
for (final BuildModes.BuildModeEnum mode : BuildModes.BuildModeEnum.values())
|
||||||
|
{
|
||||||
|
final ResourceLocation spriteLocation = new ResourceLocation(EffortlessBuilding.MODID, "icons/" + mode.name().toLowerCase());
|
||||||
|
event.addSprite(spriteLocation);
|
||||||
|
buildModeIcons.put(mode, spriteLocation);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (final ModeOptions.ActionEnum action : ModeOptions.ActionEnum.values())
|
||||||
|
{
|
||||||
|
final ResourceLocation spriteLocation = new ResourceLocation(EffortlessBuilding.MODID, "icons/" + action.name().toLowerCase());
|
||||||
|
event.addSprite(spriteLocation);
|
||||||
|
modeOptionIcons.put(action, spriteLocation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TextureAtlasSprite getBuildModeIcon(BuildModes.BuildModeEnum mode) {
|
||||||
|
return Minecraft.getInstance().getTextureMap().getSprite(buildModeIcons.get(mode));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TextureAtlasSprite getModeOptionIcon(ModeOptions.ActionEnum action) {
|
||||||
|
return Minecraft.getInstance().getTextureMap().getSprite(modeOptionIcons.get(action));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,11 +3,10 @@ package nl.requios.effortlessbuilding;
|
|||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||||
import net.minecraft.inventory.container.Container;
|
|
||||||
import net.minecraft.inventory.container.ContainerType;
|
|
||||||
import net.minecraft.item.Item;
|
|
||||||
import net.minecraft.item.BlockItem;
|
import net.minecraft.item.BlockItem;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.client.event.TextureStitchEvent;
|
import net.minecraftforge.client.event.TextureStitchEvent;
|
||||||
import net.minecraftforge.event.RegistryEvent;
|
import net.minecraftforge.event.RegistryEvent;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
@@ -22,9 +21,6 @@ import java.util.HashMap;
|
|||||||
@Mod.EventBusSubscriber(bus=Mod.EventBusSubscriber.Bus.MOD)
|
@Mod.EventBusSubscriber(bus=Mod.EventBusSubscriber.Bus.MOD)
|
||||||
public class ModEventHandler {
|
public class ModEventHandler {
|
||||||
|
|
||||||
private static final HashMap<BuildModes.BuildModeEnum, ResourceLocation> buildModeIcons = new HashMap<>();
|
|
||||||
private static final HashMap<ModeOptions.ActionEnum, ResourceLocation> modeOptionIcons = new HashMap<>();
|
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void registerBlocks(RegistryEvent.Register<Block> event) {
|
public static void registerBlocks(RegistryEvent.Register<Block> event) {
|
||||||
event.getRegistry().registerAll(EffortlessBuilding.BLOCKS);
|
event.getRegistry().registerAll(EffortlessBuilding.BLOCKS);
|
||||||
@@ -40,35 +36,10 @@ public class ModEventHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO 1.14 Gui
|
|
||||||
// @SubscribeEvent
|
// @SubscribeEvent
|
||||||
// public static void registerContainerTypes(RegistryEvent.Register<ContainerType<?>> event) {
|
// public static void registerContainerTypes(RegistryEvent.Register<ContainerType<?>> event) {
|
||||||
// event.getRegistry().register()
|
// event.getRegistry().register()
|
||||||
// }
|
// }
|
||||||
|
|
||||||
@SubscribeEvent
|
|
||||||
public static void onTextureStitch(final TextureStitchEvent.Pre event) {
|
|
||||||
//register icon textures
|
|
||||||
for (final BuildModes.BuildModeEnum mode : BuildModes.BuildModeEnum.values())
|
|
||||||
{
|
|
||||||
final ResourceLocation spriteLocation = new ResourceLocation(EffortlessBuilding.MODID, "icons/" + mode.name().toLowerCase());
|
|
||||||
event.addSprite(spriteLocation);
|
|
||||||
buildModeIcons.put(mode, spriteLocation);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (final ModeOptions.ActionEnum action : ModeOptions.ActionEnum.values())
|
|
||||||
{
|
|
||||||
final ResourceLocation spriteLocation = new ResourceLocation(EffortlessBuilding.MODID, "icons/" + action.name().toLowerCase());
|
|
||||||
event.addSprite(spriteLocation);
|
|
||||||
modeOptionIcons.put(action, spriteLocation);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static TextureAtlasSprite getBuildModeIcon(BuildModes.BuildModeEnum mode) {
|
|
||||||
return Minecraft.getInstance().getTextureMap().getSprite(buildModeIcons.get(mode));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static TextureAtlasSprite getModeOptionIcon(ModeOptions.ActionEnum action) {
|
|
||||||
return Minecraft.getInstance().getTextureMap().getSprite(modeOptionIcons.get(action));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,29 +2,35 @@ package nl.requios.effortlessbuilding.gui;
|
|||||||
|
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.entity.player.PlayerInventory;
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
|
import net.minecraft.inventory.IInventory;
|
||||||
|
import net.minecraft.inventory.Inventory;
|
||||||
import net.minecraft.inventory.container.ClickType;
|
import net.minecraft.inventory.container.ClickType;
|
||||||
import net.minecraft.inventory.container.Container;
|
import net.minecraft.inventory.container.Container;
|
||||||
import net.minecraft.inventory.container.Slot;
|
import net.minecraft.inventory.container.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.Hand;
|
import net.minecraft.util.Hand;
|
||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
import net.minecraftforge.items.ItemStackHandler;
|
||||||
import net.minecraftforge.items.SlotItemHandler;
|
import net.minecraftforge.items.SlotItemHandler;
|
||||||
|
import nl.requios.effortlessbuilding.EffortlessBuilding;
|
||||||
import nl.requios.effortlessbuilding.item.ItemRandomizerBag;
|
import nl.requios.effortlessbuilding.item.ItemRandomizerBag;
|
||||||
|
|
||||||
public class RandomizerBagContainer extends Container {
|
public class RandomizerBagContainer extends Container {
|
||||||
|
|
||||||
private final IItemHandler bagInventory;
|
private final IItemHandler bagInventory;
|
||||||
private final int sizeInventory;
|
|
||||||
|
|
||||||
private static final int INV_START = ItemRandomizerBag.INV_SIZE, INV_END = INV_START + 26,
|
private static final int INV_START = ItemRandomizerBag.INV_SIZE, INV_END = INV_START + 26,
|
||||||
HOTBAR_START = INV_END + 1, HOTBAR_END = HOTBAR_START + 8;
|
HOTBAR_START = INV_END + 1, HOTBAR_END = HOTBAR_START + 8;
|
||||||
|
|
||||||
public RandomizerBagContainer(PlayerInventory parInventoryPlayer, IItemHandler parIInventory) {
|
public RandomizerBagContainer(int containerId, PlayerInventory playerInventory) {
|
||||||
//TODO 1.14 Gui
|
this(containerId, playerInventory, new ItemStackHandler(ItemRandomizerBag.INV_SIZE));
|
||||||
super(null, 0);
|
}
|
||||||
bagInventory = parIInventory;
|
|
||||||
sizeInventory = bagInventory.getSlots();
|
public RandomizerBagContainer(int containerId, PlayerInventory playerInventory, IItemHandler inventory) {
|
||||||
for (int i = 0; i < sizeInventory; ++i) {
|
super(EffortlessBuilding.RANDOMIZER_BAG_CONTAINER, containerId);
|
||||||
|
bagInventory = inventory;
|
||||||
|
|
||||||
|
for (int i = 0; i < ItemRandomizerBag.INV_SIZE; ++i) {
|
||||||
this.addSlot(new SlotItemHandler(bagInventory, i, 44 + (18 * i), 20));
|
this.addSlot(new SlotItemHandler(bagInventory, i, 44 + (18 * i), 20));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,13 +38,13 @@ public class RandomizerBagContainer extends Container {
|
|||||||
int i;
|
int i;
|
||||||
for (i = 0; i < 3; ++i) {
|
for (i = 0; i < 3; ++i) {
|
||||||
for (int j = 0; j < 9; ++j) {
|
for (int j = 0; j < 9; ++j) {
|
||||||
addSlot(new Slot(parInventoryPlayer, j + i * 9 + 9, 8 + j * 18, 51 + i * 18));
|
addSlot(new Slot(playerInventory, j + i * 9 + 9, 8 + j * 18, 51 + i * 18));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// add hotbar slots
|
// add hotbar slots
|
||||||
for (i = 0; i < 9; ++i) {
|
for (i = 0; i < 9; ++i) {
|
||||||
addSlot(new Slot(parInventoryPlayer, i, 8 + i * 18, 109));
|
addSlot(new Slot(playerInventory, i, 8 + i * 18, 109));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,94 +0,0 @@
|
|||||||
package nl.requios.effortlessbuilding.gui;
|
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import net.minecraft.client.entity.player.ClientPlayerEntity;
|
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
|
||||||
import net.minecraft.entity.player.PlayerInventory;
|
|
||||||
import net.minecraft.inventory.container.Container;
|
|
||||||
import net.minecraft.inventory.container.INamedContainerProvider;
|
|
||||||
import net.minecraft.util.Hand;
|
|
||||||
import net.minecraft.util.text.ITextComponent;
|
|
||||||
import net.minecraft.util.text.StringTextComponent;
|
|
||||||
import net.minecraft.util.text.TranslationTextComponent;
|
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
|
||||||
import net.minecraftforge.fml.network.FMLPlayMessages;
|
|
||||||
import net.minecraftforge.items.CapabilityItemHandler;
|
|
||||||
import net.minecraftforge.items.IItemHandler;
|
|
||||||
import nl.requios.effortlessbuilding.EffortlessBuilding;
|
|
||||||
import nl.requios.effortlessbuilding.item.ItemRandomizerBag;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
|
|
||||||
public class RandomizerBagGuiHandler implements INamedContainerProvider {
|
|
||||||
// @Nullable
|
|
||||||
// @Override
|
|
||||||
// public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
|
||||||
// if (ID == EffortlessBuilding.RANDOMIZER_BAG_GUI) {
|
|
||||||
// // Use the player's held item to create the container
|
|
||||||
// LazyOptional<IItemHandler> capabilityOptional = player.getHeldItemMainhand().getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
|
|
||||||
//
|
|
||||||
// if (!capabilityOptional.isPresent()) {
|
|
||||||
// capabilityOptional = player.getHeldItemOffhand().getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// return new RandomizerBagContainer(player.inventory, capabilityOptional.orElse(null));
|
|
||||||
// }
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Nullable
|
|
||||||
// @Override
|
|
||||||
// @OnlyIn(Dist.CLIENT)
|
|
||||||
// public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
|
||||||
// if (ID == EffortlessBuilding.RANDOMIZER_BAG_GUI) {
|
|
||||||
// // Use the player's held item to create the client-side gui container
|
|
||||||
// LazyOptional<IItemHandler> capabilityOptional = player.getHeldItemMainhand().getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
|
|
||||||
//
|
|
||||||
// if (!capabilityOptional.isPresent()) {
|
|
||||||
// capabilityOptional = player.getHeldItemOffhand().getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// return new RandomizerBagGuiContainer(player.inventory, capabilityOptional.orElse(null));
|
|
||||||
// }
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// @OnlyIn(Dist.CLIENT)
|
|
||||||
// public static Screen openGui(FMLPlayMessages.OpenContainer openContainer) {
|
|
||||||
// if (openContainer.getId().equals(EffortlessBuilding.RANDOMIZER_BAG_GUI)) {
|
|
||||||
// ClientPlayerEntity player = Minecraft.getInstance().player;
|
|
||||||
// if (player.getHeldItem(Hand.MAIN_HAND).getItem() instanceof ItemRandomizerBag) {
|
|
||||||
// IItemHandler itemHandler = player.getHeldItem(Hand.MAIN_HAND).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).orElse(null);
|
|
||||||
// if (itemHandler != null) {
|
|
||||||
// return new RandomizerBagGuiContainer(player.inventory, itemHandler);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public Container createContainer(PlayerInventory inventory, PlayerEntity player) {
|
|
||||||
// if (player.getHeldItem(Hand.MAIN_HAND).getItem() instanceof ItemRandomizerBag) {
|
|
||||||
// IItemHandler itemHandler = player.getHeldItem(Hand.MAIN_HAND).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).orElse(null);
|
|
||||||
// if (itemHandler != null) {
|
|
||||||
// return new RandomizerBagContainer(inventory, itemHandler);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ITextComponent getDisplayName() {
|
|
||||||
return new TranslationTextComponent("effortlessbuilding.screen.randomizer_bag");
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO 1.14 GUI
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
public Container createMenu(int containerId, PlayerInventory playerInventory, PlayerEntity player) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4,6 +4,7 @@ import com.mojang.blaze3d.platform.GlStateManager;
|
|||||||
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
|
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
|
||||||
import net.minecraft.entity.player.PlayerInventory;
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import net.minecraft.util.text.ITextComponent;
|
||||||
import net.minecraft.util.text.TranslationTextComponent;
|
import net.minecraft.util.text.TranslationTextComponent;
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
@@ -11,17 +12,12 @@ import net.minecraftforge.items.IItemHandler;
|
|||||||
import nl.requios.effortlessbuilding.EffortlessBuilding;
|
import nl.requios.effortlessbuilding.EffortlessBuilding;
|
||||||
|
|
||||||
@OnlyIn(Dist.CLIENT)
|
@OnlyIn(Dist.CLIENT)
|
||||||
public class RandomizerBagGuiContainer extends ContainerScreen {
|
public class RandomizerBagScreen extends ContainerScreen<RandomizerBagContainer> {
|
||||||
private static final ResourceLocation guiTextures =
|
private static final ResourceLocation guiTextures =
|
||||||
new ResourceLocation(EffortlessBuilding.MODID, "textures/gui/container/randomizerbag.png");
|
new ResourceLocation(EffortlessBuilding.MODID, "textures/gui/container/randomizerbag.png");
|
||||||
private final PlayerInventory inventoryPlayer;
|
|
||||||
private final IItemHandler inventoryBag;
|
|
||||||
|
|
||||||
public RandomizerBagGuiContainer(PlayerInventory inventoryPlayer, IItemHandler inventoryBag) {
|
|
||||||
super(new RandomizerBagContainer(inventoryPlayer, inventoryBag), inventoryPlayer, new TranslationTextComponent("effortlessbuilding.screen.randomizer_bag"));
|
|
||||||
this.inventoryPlayer = inventoryPlayer;
|
|
||||||
this.inventoryBag = inventoryBag;
|
|
||||||
|
|
||||||
|
public RandomizerBagScreen(RandomizerBagContainer randomizerBagContainer, PlayerInventory playerInventory, ITextComponent title) {
|
||||||
|
super(randomizerBagContainer, playerInventory, title);//new TranslationTextComponent("effortlessbuilding.screen.randomizer_bag"));
|
||||||
ySize = 134;
|
ySize = 134;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,9 +30,8 @@ public class RandomizerBagGuiContainer extends ContainerScreen {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
|
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
|
||||||
String s = "Randomizer Bag";
|
font.drawString(this.title.getFormattedText(), 8, 6, 0x404040);
|
||||||
font.drawString(s, 8, 6, 0x404040);
|
font.drawString(playerInventory.getDisplayName().getFormattedText(), 8, ySize - 96 + 2, 0x404040);
|
||||||
font.drawString(inventoryPlayer.getDisplayName().getUnformattedComponentText(), 8, ySize - 96 + 2, 0x404040);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -11,6 +11,7 @@ import net.minecraft.util.text.ITextComponent;
|
|||||||
import net.minecraft.util.text.TextFormatting;
|
import net.minecraft.util.text.TextFormatting;
|
||||||
import net.minecraft.util.text.TranslationTextComponent;
|
import net.minecraft.util.text.TranslationTextComponent;
|
||||||
import nl.requios.effortlessbuilding.EffortlessBuilding;
|
import nl.requios.effortlessbuilding.EffortlessBuilding;
|
||||||
|
import nl.requios.effortlessbuilding.ModClientEventHandler;
|
||||||
import nl.requios.effortlessbuilding.ModEventHandler;
|
import nl.requios.effortlessbuilding.ModEventHandler;
|
||||||
import nl.requios.effortlessbuilding.buildmode.ModeSettingsManager;
|
import nl.requios.effortlessbuilding.buildmode.ModeSettingsManager;
|
||||||
import nl.requios.effortlessbuilding.proxy.ClientProxy;
|
import nl.requios.effortlessbuilding.proxy.ClientProxy;
|
||||||
@@ -299,7 +300,7 @@ public class RadialMenu extends Screen {
|
|||||||
final double x = (menuRegion.x1 + menuRegion.x2) * 0.5 * (ringOuterEdge * 0.6 + 0.4 * ringInnerEdge);
|
final double x = (menuRegion.x1 + menuRegion.x2) * 0.5 * (ringOuterEdge * 0.6 + 0.4 * ringInnerEdge);
|
||||||
final double y = (menuRegion.y1 + menuRegion.y2) * 0.5 * (ringOuterEdge * 0.6 + 0.4 * ringInnerEdge);
|
final double y = (menuRegion.y1 + menuRegion.y2) * 0.5 * (ringOuterEdge * 0.6 + 0.4 * ringInnerEdge);
|
||||||
|
|
||||||
final TextureAtlasSprite sprite = ModEventHandler.getBuildModeIcon(menuRegion.mode);
|
final TextureAtlasSprite sprite = ModClientEventHandler.getBuildModeIcon(menuRegion.mode);
|
||||||
|
|
||||||
final double x1 = x - 8;
|
final double x1 = x - 8;
|
||||||
final double x2 = x + 8;
|
final double x2 = x + 8;
|
||||||
@@ -331,7 +332,7 @@ public class RadialMenu extends Screen {
|
|||||||
final double v1 = 0;
|
final double v1 = 0;
|
||||||
final double v2 = 16;
|
final double v2 = 16;
|
||||||
|
|
||||||
final TextureAtlasSprite sprite = ModEventHandler.getModeOptionIcon(button.action);
|
final TextureAtlasSprite sprite = ModClientEventHandler.getModeOptionIcon(button.action);
|
||||||
|
|
||||||
final double btnmiddleX = (button.x1 + button.x2) / 2 + 0.01;
|
final double btnmiddleX = (button.x1 + button.x2) / 2 + 0.01;
|
||||||
final double btnmiddleY = (button.y1 + button.y2) / 2 + 0.01;
|
final double btnmiddleY = (button.y1 + button.y2) / 2 + 0.01;
|
||||||
|
|||||||
@@ -4,7 +4,10 @@ import net.minecraft.block.Block;
|
|||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.util.ITooltipFlag;
|
import net.minecraft.client.util.ITooltipFlag;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||||
|
import net.minecraft.inventory.container.Container;
|
||||||
|
import net.minecraft.inventory.container.INamedContainerProvider;
|
||||||
import net.minecraft.item.*;
|
import net.minecraft.item.*;
|
||||||
import net.minecraft.nbt.CompoundNBT;
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
import net.minecraft.util.*;
|
import net.minecraft.util.*;
|
||||||
@@ -16,6 +19,7 @@ import net.minecraft.util.math.Vec3d;
|
|||||||
import net.minecraft.util.text.ITextComponent;
|
import net.minecraft.util.text.ITextComponent;
|
||||||
import net.minecraft.util.text.StringTextComponent;
|
import net.minecraft.util.text.StringTextComponent;
|
||||||
import net.minecraft.util.text.TextFormatting;
|
import net.minecraft.util.text.TextFormatting;
|
||||||
|
import net.minecraft.util.text.TranslationTextComponent;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.capabilities.ICapabilityProvider;
|
import net.minecraftforge.common.capabilities.ICapabilityProvider;
|
||||||
import net.minecraftforge.fml.network.NetworkHooks;
|
import net.minecraftforge.fml.network.NetworkHooks;
|
||||||
@@ -26,7 +30,7 @@ import nl.requios.effortlessbuilding.buildmode.BuildModes;
|
|||||||
import nl.requios.effortlessbuilding.buildmode.ModeSettingsManager;
|
import nl.requios.effortlessbuilding.buildmode.ModeSettingsManager;
|
||||||
import nl.requios.effortlessbuilding.buildmodifier.ModifierSettingsManager;
|
import nl.requios.effortlessbuilding.buildmodifier.ModifierSettingsManager;
|
||||||
import nl.requios.effortlessbuilding.capability.ItemHandlerCapabilityProvider;
|
import nl.requios.effortlessbuilding.capability.ItemHandlerCapabilityProvider;
|
||||||
import nl.requios.effortlessbuilding.gui.RandomizerBagGuiHandler;
|
import nl.requios.effortlessbuilding.gui.RandomizerBagContainer;
|
||||||
import nl.requios.effortlessbuilding.helper.SurvivalHelper;
|
import nl.requios.effortlessbuilding.helper.SurvivalHelper;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
@@ -61,7 +65,7 @@ public class ItemRandomizerBag extends Item {
|
|||||||
if (ctx.isPlacerSneaking()) {
|
if (ctx.isPlacerSneaking()) {
|
||||||
if (world.isRemote) return ActionResultType.SUCCESS;
|
if (world.isRemote) return ActionResultType.SUCCESS;
|
||||||
//Open inventory
|
//Open inventory
|
||||||
NetworkHooks.openGui((ServerPlayerEntity) player, new RandomizerBagGuiHandler());
|
NetworkHooks.openGui((ServerPlayerEntity) player, new ContainerProvider(item));
|
||||||
} else {
|
} else {
|
||||||
if (world.isRemote) return ActionResultType.SUCCESS;
|
if (world.isRemote) return ActionResultType.SUCCESS;
|
||||||
|
|
||||||
@@ -114,7 +118,7 @@ public class ItemRandomizerBag extends Item {
|
|||||||
if (player.isSneaking()) {
|
if (player.isSneaking()) {
|
||||||
if (world.isRemote) return new ActionResult<>(ActionResultType.SUCCESS, bag);
|
if (world.isRemote) return new ActionResult<>(ActionResultType.SUCCESS, bag);
|
||||||
//Open inventory
|
//Open inventory
|
||||||
NetworkHooks.openGui((ServerPlayerEntity) player, new RandomizerBagGuiHandler());
|
NetworkHooks.openGui((ServerPlayerEntity) player, new ContainerProvider(bag));
|
||||||
} else {
|
} else {
|
||||||
//Use item
|
//Use item
|
||||||
//Get bag inventory
|
//Get bag inventory
|
||||||
@@ -200,6 +204,9 @@ public class ItemRandomizerBag extends Item {
|
|||||||
public void addInformation(ItemStack stack, @Nullable World world, List<ITextComponent> tooltip, ITooltipFlag flag) {
|
public void addInformation(ItemStack stack, @Nullable World world, List<ITextComponent> tooltip, ITooltipFlag flag) {
|
||||||
tooltip.add(new StringTextComponent(TextFormatting.BLUE + "Rightclick" + TextFormatting.GRAY + " to place a random block"));
|
tooltip.add(new StringTextComponent(TextFormatting.BLUE + "Rightclick" + TextFormatting.GRAY + " to place a random block"));
|
||||||
tooltip.add(new StringTextComponent(TextFormatting.BLUE + "Sneak + rightclick" + TextFormatting.GRAY + " to open inventory"));
|
tooltip.add(new StringTextComponent(TextFormatting.BLUE + "Sneak + rightclick" + TextFormatting.GRAY + " to open inventory"));
|
||||||
|
if (world != null && world.getPlayers().size() > 1) {
|
||||||
|
tooltip.add(new StringTextComponent(TextFormatting.YELLOW + "Experimental on servers: may lose inventory"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -215,4 +222,24 @@ public class ItemRandomizerBag extends Item {
|
|||||||
currentSeed = Calendar.getInstance().getTimeInMillis();
|
currentSeed = Calendar.getInstance().getTimeInMillis();
|
||||||
rand.setSeed(currentSeed);
|
rand.setSeed(currentSeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class ContainerProvider implements INamedContainerProvider{
|
||||||
|
|
||||||
|
private ItemStack bag;
|
||||||
|
|
||||||
|
public ContainerProvider(ItemStack bag) {
|
||||||
|
this.bag = bag;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ITextComponent getDisplayName() {
|
||||||
|
return new TranslationTextComponent("effortlessbuilding.screen.randomizer_bag");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public Container createMenu(int containerId, PlayerInventory playerInventory, PlayerEntity player) {
|
||||||
|
return new RandomizerBagContainer(containerId, playerInventory, ItemRandomizerBag.getBagInventory(bag));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import net.minecraft.block.BlockState;
|
|||||||
import net.minecraft.block.SoundType;
|
import net.minecraft.block.SoundType;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.entity.player.ClientPlayerEntity;
|
import net.minecraft.client.entity.player.ClientPlayerEntity;
|
||||||
|
import net.minecraft.client.gui.ScreenManager;
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
import net.minecraft.client.gui.screen.Screen;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||||
import net.minecraft.client.renderer.texture.AtlasTexture;
|
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
import net.minecraft.client.settings.KeyBinding;
|
import net.minecraft.client.settings.KeyBinding;
|
||||||
import net.minecraft.client.util.InputMappings;
|
import net.minecraft.client.util.InputMappings;
|
||||||
@@ -26,8 +26,8 @@ import net.minecraftforge.client.event.TextureStitchEvent;
|
|||||||
import net.minecraftforge.client.settings.KeyConflictContext;
|
import net.minecraftforge.client.settings.KeyConflictContext;
|
||||||
import net.minecraftforge.client.settings.KeyModifier;
|
import net.minecraftforge.client.settings.KeyModifier;
|
||||||
import net.minecraftforge.event.TickEvent;
|
import net.minecraftforge.event.TickEvent;
|
||||||
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
|
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
import net.minecraftforge.fml.DeferredWorkQueue;
|
||||||
import net.minecraftforge.fml.LogicalSide;
|
import net.minecraftforge.fml.LogicalSide;
|
||||||
import net.minecraftforge.fml.client.registry.ClientRegistry;
|
import net.minecraftforge.fml.client.registry.ClientRegistry;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
@@ -40,11 +40,11 @@ import nl.requios.effortlessbuilding.buildmode.ModeOptions;
|
|||||||
import nl.requios.effortlessbuilding.buildmode.ModeSettingsManager;
|
import nl.requios.effortlessbuilding.buildmode.ModeSettingsManager;
|
||||||
import nl.requios.effortlessbuilding.buildmodifier.ModifierSettingsManager;
|
import nl.requios.effortlessbuilding.buildmodifier.ModifierSettingsManager;
|
||||||
import nl.requios.effortlessbuilding.compatibility.CompatHelper;
|
import nl.requios.effortlessbuilding.compatibility.CompatHelper;
|
||||||
|
import nl.requios.effortlessbuilding.gui.RandomizerBagScreen;
|
||||||
import nl.requios.effortlessbuilding.gui.buildmode.RadialMenu;
|
import nl.requios.effortlessbuilding.gui.buildmode.RadialMenu;
|
||||||
import nl.requios.effortlessbuilding.gui.buildmodifier.ModifierSettingsGui;
|
import nl.requios.effortlessbuilding.gui.buildmodifier.ModifierSettingsGui;
|
||||||
import nl.requios.effortlessbuilding.helper.ReachHelper;
|
import nl.requios.effortlessbuilding.helper.ReachHelper;
|
||||||
import nl.requios.effortlessbuilding.network.*;
|
import nl.requios.effortlessbuilding.network.*;
|
||||||
import nl.requios.effortlessbuilding.render.RenderHandler;
|
|
||||||
import nl.requios.effortlessbuilding.render.ShaderHandler;
|
import nl.requios.effortlessbuilding.render.ShaderHandler;
|
||||||
import org.lwjgl.glfw.GLFW;
|
import org.lwjgl.glfw.GLFW;
|
||||||
|
|
||||||
@@ -96,6 +96,7 @@ public class ClientProxy implements IProxy {
|
|||||||
ClientRegistry.registerKeyBinding(keyBindings[i]);
|
ClientRegistry.registerKeyBinding(keyBindings[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DeferredWorkQueue.runLater( () -> ScreenManager.registerFactory(EffortlessBuilding.RANDOMIZER_BAG_CONTAINER, RandomizerBagScreen::new));
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlayerEntity getPlayerEntityFromContext(Supplier<NetworkEvent.Context> ctx){
|
public PlayerEntity getPlayerEntityFromContext(Supplier<NetworkEvent.Context> ctx){
|
||||||
|
|||||||
Reference in New Issue
Block a user