1.11 - ASM, Coremod and some Tile Utils.

This commit is contained in:
Modbder committed 2015-05-03 14:07:22 +03:00
1 parent 682fbdc9a0
commit 3fb65c7226
62 files changed
+5633 -5657

No files matched your search

+100
View File
@@ -0,0 +1,100 @@
package DummyCore.ASM;
import java.util.Arrays;
import java.util.List;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.tree.AnnotationNode;
import org.objectweb.asm.tree.ClassNode;
import DummyCore.Utils.Notifier;
import net.minecraft.launchwrapper.IClassTransformer;
public class DCASMManager implements IClassTransformer{
@Override
public byte[] transform(String name, String transformedName,byte[] basicClass)
{
if(basicClass != null) //If the class we are loading exists
{
ClassNode classNode = new ClassNode(); //Creating a most basic bytecode->runtime command helper.
ClassReader classReader = new ClassReader(basicClass); //Parsing the bytecode to runtime commands
classReader.accept(classNode, 0); //Giving our helper a parsed list of commands without any code modifications.
if(classNode.invisibleAnnotations != null && classNode.invisibleAnnotations.size() > 0) //If we have some invisible annotations on our class.
{
boolean checkClass = false;
for(int i = 0; i < classNode.invisibleAnnotations.size(); ++i) //Looking through all annotations presented on the class
{
AnnotationNode node = classNode.invisibleAnnotations.get(i);
if(node.desc.equalsIgnoreCase("LDummyCore/Utils/DCASMCheck;")) //If the given annotation is a DummyCore annotation, that sygnals, that the class needs to be checked.
{
checkClass = true;
break; //We have to send our class outside the loop to make sure there is no ConcurrentModificationException.
}
}
if(checkClass)
return handleClass(name,transformedName,basicClass,classNode,classReader); //If class requires inspection we are sending it into our method
}
}
return basicClass;
}
public byte[] handleClass(String name, String transformedName,byte[] basicClass,ClassNode cn, ClassReader cr)
{
Notifier.notifyCustomMod("DummyCoreASM", "Class "+name+" has requested a DummyCore ASM check via DummyCore/Utils/DCASMCheck annotation. Examining...");
String[] checkedClss = new String[0]; //Initializing the interfaces variable
for(int i = 0; i < cn.invisibleAnnotations.size(); ++i) //Checking through all annotations.
{
AnnotationNode node = cn.invisibleAnnotations.get(i);
if(node.desc.equalsIgnoreCase("LDummyCore/Utils/ExistanceCheck;") && node.values != null && node.values.size() > 0) //Checking if the annotation found is the one, that makes us go through
{
Notifier.notifyCustomMod("DummyCoreASM", "Class "+name+" has requested a DummyCore ASM check on it's implementations via DummyCore/Utils/ExistanceCheck annotation. Examining...");
List<?> classes = List.class.cast(node.values.get(1)); //Getting a full list of classes that we need to check for existance
checkedClss = new String[classes.size()];
checkedClss = String[].class.cast(classes.toArray(checkedClss));
break;
}
}
Notifier.notifyCustomMod("DummyCoreASM", "Class "+name+" has given the next interfaces to check: "+Arrays.asList(checkedClss));
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS); //Creating the ability to modify bytecode using modified instructions
if(checkedClss.length > 0) //If we have interfaces to check
{
for(int i = 0; i < checkedClss.length; ++i)
{
if(!classExists(checkedClss[i])) //If the class was NOT found
{
J:for(int j = 0; j < cn.interfaces.size(); ++j) //Looping through all interfaces presented in the class
{
if(cn.interfaces.get(j).equalsIgnoreCase(checkedClss[i].replace('.', '/'))) //If thi is the one we are looking for
{
Notifier.notifyCustomMod("DummyCoreASM", "Class "+name+" has a "+cn.interfaces.get(j)+" implementation, but the referenced class was not found. Removing the given interface.");
cn.interfaces.remove(j); //Removing it.
break J;
}
}
}else
{
Notifier.notifyCustomMod("DummyCoreASM", "Class "+name+" has a "+checkedClss[i]+" implementation, and the referenced class was found. Skipping to the next interface...");
}
}
}
cn.accept(cw); //Wrighting changed Instructions into bytecode helper
Notifier.notifyCustomMod("DummyCoreASM", "Class "+name+" has been checked.");
return cw.toByteArray(); //Returning modified bytecode.
}
boolean classExists(String s)
{
try
{
Class<?> c = Class.forName(s);
return c != null;
}
catch(ClassNotFoundException e)
{
return false;
}
}
}
+39
View File
@@ -0,0 +1,39 @@
package DummyCore.ASM;
import java.util.Map;
import cpw.mods.fml.relauncher.IFMLLoadingPlugin;
public class DCLoadingPlugin implements IFMLLoadingPlugin{
@Override
public String[] getASMTransformerClass() {
// TODO Auto-generated method stub
return new String[]{DCASMManager.class.getName()};
}
@Override
public String getModContainerClass() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getSetupClass() {
// TODO Auto-generated method stub
return null;
}
@Override
public void injectData(Map<String, Object> data) {
// TODO Auto-generated method stub
}
@Override
public String getAccessTransformerClass() {
// TODO Auto-generated method stub
return null;
}
}
+51 -61
View File
@@ -1,61 +1,51 @@
package DummyCore.Blocks;
import java.util.Hashtable;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraftforge.common.config.Configuration;
import DummyCore.Core.Core;
import DummyCore.Core.CoreInitialiser;
import DummyCore.Utils.IDummyMultiBlock;
import DummyCore.Utils.IDummyMultiItem;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import cpw.mods.fml.relauncher.Side;
/**
*
* @author Modbder
* @version From DummyCore 1.0
* @Description Use this class to register new blocks in your game.
* This will automatically add your blocks to the corresponding creative tab
*/
public class BlocksRegistry {
/**
* Used to check the creative tab block belongs to
*/
public static Hashtable<Block,String> blocksList = new Hashtable();
/**
* Use this to register new simple blocks.
* @version From DummyCore 1.0
* @param b - the block to be registered.
* @param name - in-game name of the block. Will be written to the corresponding .lang file
* @param modClass - class file of your mod. If registered from the mod itself, use getClass(), else just put in this field something like YourModClassName.class
* @param blockClass - used, if you want to register a block, that has an ItemBlock. Can be null.
*/
public static void registerBlock(Block b, String name, Class modClass, Class blockClass)
{
String blockName = name;
Configuration conf = Core.getLangFileForMod(modClass);
conf.load();
blockName = conf.get("Blocks Names", b.getUnlocalizedName(), name).getString();
conf.save();
if(blockClass == null)
{
GameRegistry.registerBlock(b, name);
}else
{
GameRegistry.registerBlock(b, blockClass, name);
}
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
b.setCreativeTab(Core.getBlockTabForMod(modClass));
blocksList.put(b, Core.getBlockTabForMod(modClass).getTabLabel());
}
}
}
package DummyCore.Blocks;
import java.util.Hashtable;
import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock;
import DummyCore.Core.Core;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
/**
*
* @author Modbder
* @version From DummyCore 1.0
* @Description Use this class to register new blocks in your game.
* This will automatically add your blocks to the corresponding creative tab
*/
public class BlocksRegistry {
/**
* Used to check the creative tab block belongs to
*/
public static Hashtable<Block,String> blocksList = new Hashtable<Block, String>();
/**
* Use this to register new simple blocks.
* @version From DummyCore 1.0
* @param b - the block to be registered.
* @param name - in-game name of the block. Will be written to the corresponding .lang file
* @param modClass - class file of your mod. If registered from the mod itself, use getClass(), else just put in this field something like YourModClassName.class
* @param blockClass - used, if you want to register a block, that has an ItemBlock. Can be null.
*/
public static void registerBlock(Block b, String name, Class<?> modClass, Class<? extends ItemBlock> blockClass)
{
if(blockClass == null)
{
GameRegistry.registerBlock(b, name);
}else
{
GameRegistry.registerBlock(b, blockClass, name);
}
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
b.setCreativeTab(Core.getBlockTabForMod(modClass));
blocksList.put(b, Core.getBlockTabForMod(modClass).getTabLabel());
}
}
}
+22 -22
View File
@@ -1,22 +1,22 @@
package DummyCore.Client;
import net.minecraft.client.Minecraft;
import net.minecraft.client.audio.PositionedSoundRecord;
import net.minecraft.client.audio.SoundHandler;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.util.ResourceLocation;
public class GuiButton_ChangeGUI extends GuiButton{
public GuiButton_ChangeGUI(int p_i1021_1_, int p_i1021_2_, int p_i1021_3_,int p_i1021_4_, int p_i1021_5_, String p_i1021_6_) {
super(p_i1021_1_, p_i1021_2_, p_i1021_3_, p_i1021_4_, p_i1021_5_, p_i1021_6_);
}
@Override
public void func_146113_a(SoundHandler p_146113_1_)
{
p_146113_1_.playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
Minecraft.getMinecraft().displayGuiScreen(new GuiMenuList(Minecraft.getMinecraft().currentScreen));
}
}
package DummyCore.Client;
import net.minecraft.client.Minecraft;
import net.minecraft.client.audio.PositionedSoundRecord;
import net.minecraft.client.audio.SoundHandler;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.util.ResourceLocation;
public class GuiButton_ChangeGUI extends GuiButton{
public GuiButton_ChangeGUI(int p_i1021_1_, int p_i1021_2_, int p_i1021_3_,int p_i1021_4_, int p_i1021_5_, String p_i1021_6_) {
super(p_i1021_1_, p_i1021_2_, p_i1021_3_, p_i1021_4_, p_i1021_5_, p_i1021_6_);
}
@Override
public void func_146113_a(SoundHandler p_146113_1_)
{
p_146113_1_.playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
Minecraft.getMinecraft().displayGuiScreen(new GuiMenuList(Minecraft.getMinecraft().currentScreen));
}
}
Regular → Executable
+65 -65
View File
@@ -1,65 +1,65 @@
package DummyCore.Client;
import java.util.ArrayList;
import java.util.List;
import org.lwjgl.opengl.GL11;
import DummyCore.Utils.MiscUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.Slot;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
public class GuiCommon extends GuiContainer{
public List<GuiElement> elementList = new ArrayList();
public TileEntity genericTile;
public ResourceLocation guiGenLocation = new ResourceLocation("textures/gui/container/dispenser.png");
public ResourceLocation slotLocation = new ResourceLocation("textures/gui/container/dispenser.png");;
public GuiCommon(Container c) {
super(c);
}
public GuiCommon(Container c, TileEntity tile) {
this(c);
genericTile = tile;
}
@Override
protected void drawGuiContainerBackgroundLayer(float f1,int i1, int i2) {
int k = (this.width - this.xSize) / 2;
int l = (this.height - this.ySize) / 2;
this.mc.renderEngine.bindTexture(guiGenLocation);
this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize);
this.drawTexturedModalRect(k+60, l+16, 6, 6, 28, 54);
this.drawTexturedModalRect(k+88, l+16, 6, 6, 28, 54);
for(int i = 0; i < this.inventorySlots.inventorySlots.size(); ++i)
{
Slot slt = (Slot) this.inventorySlots.inventorySlots.get(i);
renderSlot(slt);
GL11.glColor3f(1, 1, 1);
}
for(int i = 0; i < this.elementList.size(); ++i)
{
GuiElement element = elementList.get(i);
Minecraft.getMinecraft().renderEngine.bindTexture(element.getElementTexture());
element.draw(k+element.getX(),l+element.getY());
GL11.glColor3f(1, 1, 1);
}
}
public void renderSlot(Slot slt)
{
int k = (this.width - this.xSize) / 2;
int l = (this.height - this.ySize) / 2;
this.mc.renderEngine.bindTexture(slotLocation);
this.drawTexturedModalRect(k+slt.xDisplayPosition-1, l+slt.yDisplayPosition-1, 7, 83, 18, 18);
}
}
package DummyCore.Client;
import java.util.ArrayList;
import java.util.List;
import org.lwjgl.opengl.GL11;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.Slot;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
public class GuiCommon extends GuiContainer{
public List<GuiElement> elementList = new ArrayList<GuiElement>();
public TileEntity genericTile;
public ResourceLocation guiGenLocation = new ResourceLocation("textures/gui/container/dispenser.png");
public ResourceLocation slotLocation = new ResourceLocation("textures/gui/container/dispenser.png");;
public GuiCommon(Container c) {
super(c);
}
public GuiCommon(Container c, TileEntity tile) {
this(c);
genericTile = tile;
}
@Override
protected void drawGuiContainerBackgroundLayer(float f1,int i1, int i2) {
GL11.glColor3f(1, 1, 1);
int k = (this.width - this.xSize) / 2;
int l = (this.height - this.ySize) / 2;
this.mc.renderEngine.bindTexture(guiGenLocation);
this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize);
this.drawTexturedModalRect(k+60, l+16, 6, 6, 28, 54);
this.drawTexturedModalRect(k+88, l+16, 6, 6, 28, 54);
for(int i = 0; i < this.inventorySlots.inventorySlots.size(); ++i)
{
Slot slt = (Slot) this.inventorySlots.inventorySlots.get(i);
renderSlot(slt);
GL11.glColor3f(1, 1, 1);
}
for(int i = 0; i < this.elementList.size(); ++i)
{
GuiElement element = elementList.get(i);
Minecraft.getMinecraft().renderEngine.bindTexture(element.getElementTexture());
element.draw(k+element.getX(),l+element.getY());
GL11.glColor3f(1, 1, 1);
}
}
public void renderSlot(Slot slt)
{
int k = (this.width - this.xSize) / 2;
int l = (this.height - this.ySize) / 2;
this.mc.renderEngine.bindTexture(slotLocation);
this.drawTexturedModalRect(k+slt.xDisplayPosition-1, l+slt.yDisplayPosition-1, 7, 83, 18, 18);
}
}
Regular → Executable
+68 -68
View File
@@ -1,68 +1,68 @@
package DummyCore.Client;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.IIcon;
import net.minecraft.util.ResourceLocation;
public abstract class GuiElement {
int zLevel = 0;
public abstract ResourceLocation getElementTexture();
public abstract void draw(int posX, int posY);
public abstract int getX();
public abstract int getY();
public void drawTexturedModalRect(int p_73729_1_, int p_73729_2_, int p_73729_3_, int p_73729_4_, int p_73729_5_, int p_73729_6_)
{
float f = 0.00390625F;
float f1 = 0.00390625F;
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.addVertexWithUV((double)(p_73729_1_ + 0), (double)(p_73729_2_ + p_73729_6_), (double)this.zLevel, (double)((float)(p_73729_3_ + 0) * f), (double)((float)(p_73729_4_ + p_73729_6_) * f1));
tessellator.addVertexWithUV((double)(p_73729_1_ + p_73729_5_), (double)(p_73729_2_ + p_73729_6_), (double)this.zLevel, (double)((float)(p_73729_3_ + p_73729_5_) * f), (double)((float)(p_73729_4_ + p_73729_6_) * f1));
tessellator.addVertexWithUV((double)(p_73729_1_ + p_73729_5_), (double)(p_73729_2_ + 0), (double)this.zLevel, (double)((float)(p_73729_3_ + p_73729_5_) * f), (double)((float)(p_73729_4_ + 0) * f1));
tessellator.addVertexWithUV((double)(p_73729_1_ + 0), (double)(p_73729_2_ + 0), (double)this.zLevel, (double)((float)(p_73729_3_ + 0) * f), (double)((float)(p_73729_4_ + 0) * f1));
tessellator.draw();
}
public void drawTexturedModelRectFromIcon(int p_94065_1_, int p_94065_2_, IIcon p_94065_3_, int p_94065_4_, int p_94065_5_)
{
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.addVertexWithUV((double)(p_94065_1_ + 0), (double)(p_94065_2_ + p_94065_5_), (double)this.zLevel, (double)p_94065_3_.getMinU(), (double)p_94065_3_.getMaxV());
tessellator.addVertexWithUV((double)(p_94065_1_ + p_94065_4_), (double)(p_94065_2_ + p_94065_5_), (double)this.zLevel, (double)p_94065_3_.getMaxU(), (double)p_94065_3_.getMaxV());
tessellator.addVertexWithUV((double)(p_94065_1_ + p_94065_4_), (double)(p_94065_2_ + 0), (double)this.zLevel, (double)p_94065_3_.getMaxU(), (double)p_94065_3_.getMinV());
tessellator.addVertexWithUV((double)(p_94065_1_ + 0), (double)(p_94065_2_ + 0), (double)this.zLevel, (double)p_94065_3_.getMinU(), (double)p_94065_3_.getMinV());
tessellator.draw();
}
public static void func_146110_a(int p_146110_0_, int p_146110_1_, float p_146110_2_, float p_146110_3_, int p_146110_4_, int p_146110_5_, float p_146110_6_, float p_146110_7_)
{
float f4 = 1.0F / p_146110_6_;
float f5 = 1.0F / p_146110_7_;
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.addVertexWithUV((double)p_146110_0_, (double)(p_146110_1_ + p_146110_5_), 0.0D, (double)(p_146110_2_ * f4), (double)((p_146110_3_ + (float)p_146110_5_) * f5));
tessellator.addVertexWithUV((double)(p_146110_0_ + p_146110_4_), (double)(p_146110_1_ + p_146110_5_), 0.0D, (double)((p_146110_2_ + (float)p_146110_4_) * f4), (double)((p_146110_3_ + (float)p_146110_5_) * f5));
tessellator.addVertexWithUV((double)(p_146110_0_ + p_146110_4_), (double)p_146110_1_, 0.0D, (double)((p_146110_2_ + (float)p_146110_4_) * f4), (double)(p_146110_3_ * f5));
tessellator.addVertexWithUV((double)p_146110_0_, (double)p_146110_1_, 0.0D, (double)(p_146110_2_ * f4), (double)(p_146110_3_ * f5));
tessellator.draw();
}
public static void func_152125_a(int p_152125_0_, int p_152125_1_, float p_152125_2_, float p_152125_3_, int p_152125_4_, int p_152125_5_, int p_152125_6_, int p_152125_7_, float p_152125_8_, float p_152125_9_)
{
float f4 = 1.0F / p_152125_8_;
float f5 = 1.0F / p_152125_9_;
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.addVertexWithUV((double)p_152125_0_, (double)(p_152125_1_ + p_152125_7_), 0.0D, (double)(p_152125_2_ * f4), (double)((p_152125_3_ + (float)p_152125_5_) * f5));
tessellator.addVertexWithUV((double)(p_152125_0_ + p_152125_6_), (double)(p_152125_1_ + p_152125_7_), 0.0D, (double)((p_152125_2_ + (float)p_152125_4_) * f4), (double)((p_152125_3_ + (float)p_152125_5_) * f5));
tessellator.addVertexWithUV((double)(p_152125_0_ + p_152125_6_), (double)p_152125_1_, 0.0D, (double)((p_152125_2_ + (float)p_152125_4_) * f4), (double)(p_152125_3_ * f5));
tessellator.addVertexWithUV((double)p_152125_0_, (double)p_152125_1_, 0.0D, (double)(p_152125_2_ * f4), (double)(p_152125_3_ * f5));
tessellator.draw();
}
}
package DummyCore.Client;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.IIcon;
import net.minecraft.util.ResourceLocation;
public abstract class GuiElement {
int zLevel = 0;
public abstract ResourceLocation getElementTexture();
public abstract void draw(int posX, int posY);
public abstract int getX();
public abstract int getY();
public void drawTexturedModalRect(int p_73729_1_, int p_73729_2_, int p_73729_3_, int p_73729_4_, int p_73729_5_, int p_73729_6_)
{
float f = 0.00390625F;
float f1 = 0.00390625F;
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.addVertexWithUV((double)(p_73729_1_ + 0), (double)(p_73729_2_ + p_73729_6_), (double)this.zLevel, (double)((float)(p_73729_3_ + 0) * f), (double)((float)(p_73729_4_ + p_73729_6_) * f1));
tessellator.addVertexWithUV((double)(p_73729_1_ + p_73729_5_), (double)(p_73729_2_ + p_73729_6_), (double)this.zLevel, (double)((float)(p_73729_3_ + p_73729_5_) * f), (double)((float)(p_73729_4_ + p_73729_6_) * f1));
tessellator.addVertexWithUV((double)(p_73729_1_ + p_73729_5_), (double)(p_73729_2_ + 0), (double)this.zLevel, (double)((float)(p_73729_3_ + p_73729_5_) * f), (double)((float)(p_73729_4_ + 0) * f1));
tessellator.addVertexWithUV((double)(p_73729_1_ + 0), (double)(p_73729_2_ + 0), (double)this.zLevel, (double)((float)(p_73729_3_ + 0) * f), (double)((float)(p_73729_4_ + 0) * f1));
tessellator.draw();
}
public void drawTexturedModelRectFromIcon(int p_94065_1_, int p_94065_2_, IIcon p_94065_3_, int p_94065_4_, int p_94065_5_)
{
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.addVertexWithUV((double)(p_94065_1_ + 0), (double)(p_94065_2_ + p_94065_5_), (double)this.zLevel, (double)p_94065_3_.getMinU(), (double)p_94065_3_.getMaxV());
tessellator.addVertexWithUV((double)(p_94065_1_ + p_94065_4_), (double)(p_94065_2_ + p_94065_5_), (double)this.zLevel, (double)p_94065_3_.getMaxU(), (double)p_94065_3_.getMaxV());
tessellator.addVertexWithUV((double)(p_94065_1_ + p_94065_4_), (double)(p_94065_2_ + 0), (double)this.zLevel, (double)p_94065_3_.getMaxU(), (double)p_94065_3_.getMinV());
tessellator.addVertexWithUV((double)(p_94065_1_ + 0), (double)(p_94065_2_ + 0), (double)this.zLevel, (double)p_94065_3_.getMinU(), (double)p_94065_3_.getMinV());
tessellator.draw();
}
public static void func_146110_a(int p_146110_0_, int p_146110_1_, float p_146110_2_, float p_146110_3_, int p_146110_4_, int p_146110_5_, float p_146110_6_, float p_146110_7_)
{
float f4 = 1.0F / p_146110_6_;
float f5 = 1.0F / p_146110_7_;
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.addVertexWithUV((double)p_146110_0_, (double)(p_146110_1_ + p_146110_5_), 0.0D, (double)(p_146110_2_ * f4), (double)((p_146110_3_ + (float)p_146110_5_) * f5));
tessellator.addVertexWithUV((double)(p_146110_0_ + p_146110_4_), (double)(p_146110_1_ + p_146110_5_), 0.0D, (double)((p_146110_2_ + (float)p_146110_4_) * f4), (double)((p_146110_3_ + (float)p_146110_5_) * f5));
tessellator.addVertexWithUV((double)(p_146110_0_ + p_146110_4_), (double)p_146110_1_, 0.0D, (double)((p_146110_2_ + (float)p_146110_4_) * f4), (double)(p_146110_3_ * f5));
tessellator.addVertexWithUV((double)p_146110_0_, (double)p_146110_1_, 0.0D, (double)(p_146110_2_ * f4), (double)(p_146110_3_ * f5));
tessellator.draw();
}
public static void func_152125_a(int p_152125_0_, int p_152125_1_, float p_152125_2_, float p_152125_3_, int p_152125_4_, int p_152125_5_, int p_152125_6_, int p_152125_7_, float p_152125_8_, float p_152125_9_)
{
float f4 = 1.0F / p_152125_8_;
float f5 = 1.0F / p_152125_9_;
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.addVertexWithUV((double)p_152125_0_, (double)(p_152125_1_ + p_152125_7_), 0.0D, (double)(p_152125_2_ * f4), (double)((p_152125_3_ + (float)p_152125_5_) * f5));
tessellator.addVertexWithUV((double)(p_152125_0_ + p_152125_6_), (double)(p_152125_1_ + p_152125_7_), 0.0D, (double)((p_152125_2_ + (float)p_152125_4_) * f4), (double)((p_152125_3_ + (float)p_152125_5_) * f5));
tessellator.addVertexWithUV((double)(p_152125_0_ + p_152125_6_), (double)p_152125_1_, 0.0D, (double)((p_152125_2_ + (float)p_152125_4_) * f4), (double)(p_152125_3_ * f5));
tessellator.addVertexWithUV((double)p_152125_0_, (double)p_152125_1_, 0.0D, (double)(p_152125_2_ * f4), (double)(p_152125_3_ * f5));
tessellator.draw();
}
}
+177 -180
View File
@@ -1,180 +1,177 @@
package DummyCore.Client;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import org.apache.commons.io.Charsets;
import org.lwjgl.opengl.GL11;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import cpw.mods.fml.common.FMLCommonHandler;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiLabel;
import net.minecraft.client.gui.GuiMainMenu;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.DynamicTexture;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.ForgeHooksClient;
import DummyCore.Utils.EnumGuiPosition;
import DummyCore.Utils.IMainMenu;
public class GuiMainMenuOld extends GuiMainMenu implements IMainMenu{
private static final ResourceLocation minecraftTitleTextures = new ResourceLocation("textures/gui/title/minecraft.png");
private String splashText;
protected static final ResourceLocation buttonTextures = new ResourceLocation("textures/gui/widgets.png");
private static final Random rand = new Random(); private static final ResourceLocation splashTexts = new ResourceLocation("texts/splashes.txt");
public void initGui()
{
super.initGui();
BufferedReader bufferedreader = null;
try
{
ArrayList arraylist = new ArrayList();
bufferedreader = new BufferedReader(new InputStreamReader(Minecraft.getMinecraft().getResourceManager().getResource(splashTexts).getInputStream(), Charsets.UTF_8));
String s;
while ((s = bufferedreader.readLine()) != null)
{
s = s.trim();
if (!s.isEmpty())
{
arraylist.add(s);
}
}
if (!arraylist.isEmpty())
{
do
{
this.splashText = (String)arraylist.get(rand.nextInt(arraylist.size()));
}
while (this.splashText.hashCode() == 125780783);
}
}
catch (IOException ioexception1)
{
;
}
finally
{
if (bufferedreader != null)
{
try
{
bufferedreader.close();
}
catch (IOException ioexception)
{
;
}
}
}
}
@Override
public void drawScreen(int p_73863_1_, int p_73863_2_, float p_73863_3_)
{
Tessellator tessellator = Tessellator.instance;
short short1 = 274;
int k = this.width / 2 - short1 / 2;
byte b0 = 30;
this.drawGradientRect(0, 0, this.width, this.height, -2130706433, 16777215);
this.drawGradientRect(0, 0, this.width, this.height, 0, Integer.MIN_VALUE);
this.drawBackground(10);
this.mc.getTextureManager().bindTexture(minecraftTitleTextures);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
{
this.drawTexturedModalRect(k + 0, b0 + 0, 0, 0, 155, 44);
this.drawTexturedModalRect(k + 155, b0 + 0, 0, 45, 155, 44);
}
tessellator.setColorOpaque_I(-1);
GL11.glPushMatrix();
GL11.glTranslatef((float)(this.width / 2 + 90), 70.0F, 0.0F);
GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F);
float f1 = 1.8F - MathHelper.abs(MathHelper.sin((float)(Minecraft.getSystemTime() % 1000L) / 1000.0F * (float)Math.PI * 2.0F) * 0.1F);
f1 = f1 * 100.0F / (float)(this.fontRendererObj.getStringWidth(this.splashText) + 32);
GL11.glScalef(f1, f1, f1);
this.drawCenteredString(this.fontRendererObj, this.splashText, 0, -8, -256);
GL11.glPopMatrix();
String s = "Minecraft 1.7.10";
if (this.mc.isDemo())
{
s = s + " Demo";
}
List<String> brandings = Lists.reverse(FMLCommonHandler.instance().getBrandings(true));
for (int i = 0; i < brandings.size(); i++)
{
String brd = brandings.get(i);
if (!Strings.isNullOrEmpty(brd))
{
this.drawString(this.fontRendererObj, brd, 2, this.height - ( 10 + i * (this.fontRendererObj.FONT_HEIGHT + 1)), 16777215);
}
}
ForgeHooksClient.renderMainMenu(this, fontRendererObj, width, height);
String s1 = "Copyright Mojang AB. Do not distribute!";
this.drawString(this.fontRendererObj, s1, this.width - this.fontRendererObj.getStringWidth(s1) - 2, this.height - 10, -1);
int k1;
for (k1 = 0; k1 < this.buttonList.size(); ++k1)
{
drawButton(((GuiButton)this.buttonList.get(k1)),this.mc, p_73863_1_, p_73863_2_);
}
for (k1 = 0; k1 < this.labelList.size(); ++k1)
{
((GuiLabel)this.labelList.get(k1)).func_146159_a(this.mc, p_73863_1_, p_73863_2_);
}
}
public void drawButton(GuiButton button,Minecraft p_146112_1_, int p_146112_2_, int p_146112_3_)
{
if (button.enabled)
{
FontRenderer fontrenderer = p_146112_1_.fontRenderer;
p_146112_1_.getTextureManager().bindTexture(buttonTextures);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
boolean field_146123_n = p_146112_2_ >= button.xPosition && p_146112_3_ >= button.yPosition && p_146112_2_ < button.xPosition + button.width && p_146112_3_ < button.yPosition + button.height;
int k = button.getHoverState(field_146123_n);
GL11.glEnable(GL11.GL_BLEND);
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
this.drawTexturedModalRect(button.xPosition, button.yPosition, 0, 46 + k * 20, button.width / 2, button.height);
this.drawTexturedModalRect(button.xPosition + button.width / 2, button.yPosition, 200 - button.width / 2, 46 + k * 20, button.width / 2, button.height);
int l = 14737632;
if (button.packedFGColour != 0)
{
l = button.packedFGColour;
}
else if (!button.enabled)
{
l = 10526880;
}
else if (button.getHoverState(true) == 0)
{
l = 16777120;
}
this.drawCenteredString(fontrenderer, button.displayString, button.xPosition + button.width / 2, button.yPosition + (button.height - 8) / 2, l);
}
}
}
package DummyCore.Client;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import org.apache.commons.io.Charsets;
import org.lwjgl.opengl.GL11;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import cpw.mods.fml.common.FMLCommonHandler;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiLabel;
import net.minecraft.client.gui.GuiMainMenu;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.ForgeHooksClient;
import DummyCore.Utils.IMainMenu;
public class GuiMainMenuOld extends GuiMainMenu implements IMainMenu{
private static final ResourceLocation minecraftTitleTextures = new ResourceLocation("textures/gui/title/minecraft.png");
private String splashText;
protected static final ResourceLocation buttonTextures = new ResourceLocation("textures/gui/widgets.png");
private static final Random rand = new Random(); private static final ResourceLocation splashTexts = new ResourceLocation("texts/splashes.txt");
public void initGui()
{
super.initGui();
BufferedReader bufferedreader = null;
try
{
ArrayList<String> arraylist = new ArrayList<String>();
bufferedreader = new BufferedReader(new InputStreamReader(Minecraft.getMinecraft().getResourceManager().getResource(splashTexts).getInputStream(), Charsets.UTF_8));
String s;
while ((s = bufferedreader.readLine()) != null)
{
s = s.trim();
if (!s.isEmpty())
{
arraylist.add(s);
}
}
if (!arraylist.isEmpty())
{
do
{
this.splashText = (String)arraylist.get(rand.nextInt(arraylist.size()));
}
while (this.splashText.hashCode() == 125780783);
}
}
catch (IOException ioexception1)
{
;
}
finally
{
if (bufferedreader != null)
{
try
{
bufferedreader.close();
}
catch (IOException ioexception)
{
;
}
}
}
}
@Override
public void drawScreen(int p_73863_1_, int p_73863_2_, float p_73863_3_)
{
Tessellator tessellator = Tessellator.instance;
short short1 = 274;
int k = this.width / 2 - short1 / 2;
byte b0 = 30;
this.drawGradientRect(0, 0, this.width, this.height, -2130706433, 16777215);
this.drawGradientRect(0, 0, this.width, this.height, 0, Integer.MIN_VALUE);
this.drawBackground(10);
this.mc.getTextureManager().bindTexture(minecraftTitleTextures);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
{
this.drawTexturedModalRect(k + 0, b0 + 0, 0, 0, 155, 44);
this.drawTexturedModalRect(k + 155, b0 + 0, 0, 45, 155, 44);
}
tessellator.setColorOpaque_I(-1);
GL11.glPushMatrix();
GL11.glTranslatef((float)(this.width / 2 + 90), 70.0F, 0.0F);
GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F);
float f1 = 1.8F - MathHelper.abs(MathHelper.sin((float)(Minecraft.getSystemTime() % 1000L) / 1000.0F * (float)Math.PI * 2.0F) * 0.1F);
f1 = f1 * 100.0F / (float)(this.fontRendererObj.getStringWidth(this.splashText) + 32);
GL11.glScalef(f1, f1, f1);
this.drawCenteredString(this.fontRendererObj, this.splashText, 0, -8, -256);
GL11.glPopMatrix();
String s = "Minecraft 1.7.10";
if (this.mc.isDemo())
{
s = s + " Demo";
}
List<String> brandings = Lists.reverse(FMLCommonHandler.instance().getBrandings(true));
for (int i = 0; i < brandings.size(); i++)
{
String brd = brandings.get(i);
if (!Strings.isNullOrEmpty(brd))
{
this.drawString(this.fontRendererObj, brd, 2, this.height - ( 10 + i * (this.fontRendererObj.FONT_HEIGHT + 1)), 16777215);
}
}
ForgeHooksClient.renderMainMenu(this, fontRendererObj, width, height);
String s1 = "Copyright Mojang AB. Do not distribute!";
this.drawString(this.fontRendererObj, s1, this.width - this.fontRendererObj.getStringWidth(s1) - 2, this.height - 10, -1);
int k1;
for (k1 = 0; k1 < this.buttonList.size(); ++k1)
{
drawButton(((GuiButton)this.buttonList.get(k1)),this.mc, p_73863_1_, p_73863_2_);
}
for (k1 = 0; k1 < this.labelList.size(); ++k1)
{
((GuiLabel)this.labelList.get(k1)).func_146159_a(this.mc, p_73863_1_, p_73863_2_);
}
}
public void drawButton(GuiButton button,Minecraft p_146112_1_, int p_146112_2_, int p_146112_3_)
{
if (button.enabled)
{
FontRenderer fontrenderer = p_146112_1_.fontRenderer;
p_146112_1_.getTextureManager().bindTexture(buttonTextures);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
boolean field_146123_n = p_146112_2_ >= button.xPosition && p_146112_3_ >= button.yPosition && p_146112_2_ < button.xPosition + button.width && p_146112_3_ < button.yPosition + button.height;
int k = button.getHoverState(field_146123_n);
GL11.glEnable(GL11.GL_BLEND);
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
this.drawTexturedModalRect(button.xPosition, button.yPosition, 0, 46 + k * 20, button.width / 2, button.height);
this.drawTexturedModalRect(button.xPosition + button.width / 2, button.yPosition, 200 - button.width / 2, 46 + k * 20, button.width / 2, button.height);
int l = 14737632;
if (button.packedFGColour != 0)
{
l = button.packedFGColour;
}
else if (!button.enabled)
{
l = 10526880;
}
else if (button.getHoverState(true) == 0)
{
l = 16777120;
}
this.drawCenteredString(fontrenderer, button.displayString, button.xPosition + button.width / 2, button.yPosition + (button.height - 8) / 2, l);
}
}
}
+8 -15
View File
@@ -1,15 +1,8 @@
package DummyCore.Client;
import java.util.List;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiMainMenu;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.util.ResourceLocation;
import DummyCore.Utils.EnumGuiPosition;
import DummyCore.Utils.IMainMenu;
public class GuiMainMenuVanilla extends GuiMainMenu implements IMainMenu{
}
package DummyCore.Client;
import net.minecraft.client.gui.GuiMainMenu;
import DummyCore.Utils.IMainMenu;
public class GuiMainMenuVanilla extends GuiMainMenu implements IMainMenu{
}
+116 -143
View File
@@ -1,143 +1,116 @@
package DummyCore.Client;
import java.awt.Dimension;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import javax.imageio.ImageIO;
import org.apache.logging.log4j.Level;
import org.lwjgl.opengl.GL11;
import DummyCore.Utils.DummyConfig;
import DummyCore.Utils.DummyData;
import com.google.common.base.Strings;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.client.GuiSlotModList;
import cpw.mods.fml.client.IModGuiFactory;
import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.ModContainer;
import cpw.mods.fml.common.ModContainer.Disableable;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.DynamicTexture;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.resources.IResourcePack;
import net.minecraft.util.ResourceLocation;
public class GuiMenuList extends GuiScreen{
private GuiScreen mainMenu;
private GuiSlotMenuList modList;
private int selected = -1;
private Class selectedMod;
private int listWidth;
private ResourceLocation cachedLogo;
private Dimension cachedLogoDimensions;
public GuiMenuList(GuiScreen mainMenu)
{
this.mainMenu=mainMenu;
}
/**
* Adds the buttons (and other controls) to the screen in question.
*/
@SuppressWarnings("unchecked")
@Override
public void initGui()
{
for (DummyData data : MainMenuRegistry.menuInfoLst) {
listWidth=Math.max(listWidth,getFontRenderer().getStringWidth(data.fieldName) + 10);
listWidth=Math.max(listWidth,getFontRenderer().getStringWidth(data.fieldValue) + 10);
}
listWidth=Math.min(listWidth, 150);
this.buttonList.add(new GuiButton(6, this.width / 2 - 75, this.height - 38, I18n.format("gui.done")));
this.modList=new GuiSlotMenuList(this, listWidth);
this.modList.registerScrollButtons(this.buttonList, 7, 8);
}
@Override
protected void actionPerformed(GuiButton button) {
if (button.enabled)
{
switch (button.id)
{
case 6:
{
this.mc.displayGuiScreen(this.mainMenu);
return;
}
}
}
super.actionPerformed(button);
}
public int drawLine(String line, int offset, int shifty)
{
this.fontRendererObj.drawString(line, offset, shifty, 0xd7edea);
return shifty + 10;
}
/**
* Draws the screen and all the components in it.
*/
@Override
public void drawScreen(int p_571_1_, int p_571_2_, float p_571_3_)
{
this.modList.drawScreen(p_571_1_, p_571_2_, p_571_3_);
this.drawCenteredString(this.fontRendererObj, "Menu List", this.width / 2, 16, 0xFFFFFF);
int offset = this.listWidth + 20;
if (selectedMod != null)
{
DummyData data = MainMenuRegistry.menuInfoLst.get(selected);
GL11.glEnable(GL11.GL_BLEND);
{
offset = ( this.listWidth + this.width ) / 2;
this.drawCenteredString(this.fontRendererObj, data.fieldName, offset, 35, 0xFFFFFF);
this.drawCenteredString(this.fontRendererObj, data.fieldValue, offset, 45, 0xFFFFFF);
}
GL11.glDisable(GL11.GL_BLEND);
}
super.drawScreen(p_571_1_, p_571_2_, p_571_3_);
}
Minecraft getMinecraftInstance() {
/** Reference to the Minecraft object. */
return mc;
}
FontRenderer getFontRenderer() {
/** The FontRenderer used by GuiScreen */
return fontRendererObj;
}
/**
* @param var1
*/
public void selectIndex(int var1)
{
this.selected=var1;
if (var1>=0 && var1<=MainMenuRegistry.menuList.size()) {
this.selectedMod=MainMenuRegistry.menuList.get(selected);
} else {
this.selectedMod=null;
}
DummyConfig.setMainMenu(selected);
cachedLogo = null;
}
public boolean indexSelected(int var1)
{
return var1==selected;
}
}
package DummyCore.Client;
import org.lwjgl.opengl.GL11;
import DummyCore.Utils.DummyConfig;
import DummyCore.Utils.DummyData;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.resources.I18n;
public class GuiMenuList extends GuiScreen{
private GuiScreen mainMenu;
private GuiSlotMenuList modList;
private int selected = -1;
private Class<?> selectedMod;
private int listWidth;
public GuiMenuList(GuiScreen mainMenu)
{
this.mainMenu=mainMenu;
}
/**
* Adds the buttons (and other controls) to the screen in question.
*/
@SuppressWarnings("unchecked")
@Override
public void initGui()
{
for (DummyData data : MainMenuRegistry.menuInfoLst) {
listWidth=Math.max(listWidth,getFontRenderer().getStringWidth(data.fieldName) + 10);
listWidth=Math.max(listWidth,getFontRenderer().getStringWidth(data.fieldValue) + 10);
}
listWidth=Math.min(listWidth, 150);
this.buttonList.add(new GuiButton(6, this.width / 2 - 75, this.height - 38, I18n.format("gui.done")));
this.modList=new GuiSlotMenuList(this, listWidth);
this.modList.registerScrollButtons(this.buttonList, 7, 8);
}
@Override
protected void actionPerformed(GuiButton button) {
if (button.enabled)
{
switch (button.id)
{
case 6:
{
this.mc.displayGuiScreen(this.mainMenu);
return;
}
}
}
super.actionPerformed(button);
}
public int drawLine(String line, int offset, int shifty)
{
this.fontRendererObj.drawString(line, offset, shifty, 0xd7edea);
return shifty + 10;
}
/**
* Draws the screen and all the components in it.
*/
@Override
public void drawScreen(int p_571_1_, int p_571_2_, float p_571_3_)
{
this.modList.drawScreen(p_571_1_, p_571_2_, p_571_3_);
this.drawCenteredString(this.fontRendererObj, "Menu List", this.width / 2, 16, 0xFFFFFF);
int offset = this.listWidth + 20;
if (selectedMod != null)
{
DummyData data = MainMenuRegistry.menuInfoLst.get(selected);
GL11.glEnable(GL11.GL_BLEND);
{
offset = ( this.listWidth + this.width ) / 2;
this.drawCenteredString(this.fontRendererObj, data.fieldName, offset, 35, 0xFFFFFF);
this.drawCenteredString(this.fontRendererObj, data.fieldValue, offset, 45, 0xFFFFFF);
}
GL11.glDisable(GL11.GL_BLEND);
}
super.drawScreen(p_571_1_, p_571_2_, p_571_3_);
}
Minecraft getMinecraftInstance() {
/** Reference to the Minecraft object. */
return mc;
}
FontRenderer getFontRenderer() {
/** The FontRenderer used by GuiScreen */
return fontRendererObj;
}
/**
* @param var1
*/
public void selectIndex(int var1)
{
this.selected=var1;
if (var1>=0 && var1<=MainMenuRegistry.menuList.size()) {
this.selectedMod=MainMenuRegistry.menuList.get(selected);
} else {
this.selectedMod=null;
}
DummyConfig.setMainMenu(selected);
}
public boolean indexSelected(int var1)
{
return var1==selected;
}
}
+56 -63
View File
@@ -1,63 +1,56 @@
package DummyCore.Client;
import java.util.ArrayList;
import DummyCore.Utils.DummyData;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.Tessellator;
import cpw.mods.fml.client.GuiModList;
import cpw.mods.fml.client.GuiScrollingList;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.ModContainer;
import cpw.mods.fml.common.LoaderState.ModState;
public class GuiSlotMenuList extends GuiScrollingList {
private GuiMenuList parent;
public GuiSlotMenuList(GuiMenuList parent, int listWidth)
{
super(Minecraft.getMinecraft(), listWidth, parent.height, 32, parent.height - 66 + 4, 10, 35);
this.parent=parent;
}
@Override
protected int getSize()
{
return MainMenuRegistry.menuList.size();
}
@Override
protected void elementClicked(int var1, boolean var2)
{
this.parent.selectIndex(var1);
}
@Override
protected boolean isSelected(int var1)
{
return this.parent.indexSelected(var1);
}
@Override
protected void drawBackground()
{
this.parent.drawDefaultBackground();
}
@Override
protected int getContentHeight()
{
return (this.getSize()) * 35 + 1;
}
@Override
protected void drawSlot(int listIndex, int var2, int var3, int var4, Tessellator var5)
{
DummyData data = MainMenuRegistry.menuInfoLst.get(listIndex);
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth(data.fieldName, listWidth - 10), this.left + 3 , var3 + 2, 0xFFFFFF);
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth(data.fieldValue, listWidth - 10), this.left + 3 , var3 + 12, 0xCCCCCC);
}
}
package DummyCore.Client;
import DummyCore.Utils.DummyData;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.Tessellator;
import cpw.mods.fml.client.GuiScrollingList;
public class GuiSlotMenuList extends GuiScrollingList {
private GuiMenuList parent;
public GuiSlotMenuList(GuiMenuList parent, int listWidth)
{
super(Minecraft.getMinecraft(), listWidth, parent.height, 32, parent.height - 66 + 4, 10, 35);
this.parent=parent;
}
@Override
protected int getSize()
{
return MainMenuRegistry.menuList.size();
}
@Override
protected void elementClicked(int var1, boolean var2)
{
this.parent.selectIndex(var1);
}
@Override
protected boolean isSelected(int var1)
{
return this.parent.indexSelected(var1);
}
@Override
protected void drawBackground()
{
this.parent.drawDefaultBackground();
}
@Override
protected int getContentHeight()
{
return (this.getSize()) * 35 + 1;
}
@Override
protected void drawSlot(int listIndex, int var2, int var3, int var4, Tessellator var5)
{
DummyData data = MainMenuRegistry.menuInfoLst.get(listIndex);
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth(data.fieldName, listWidth - 10), this.left + 3 , var3 + 2, 0xFFFFFF);
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth(data.fieldValue, listWidth - 10), this.left + 3 , var3 + 12, 0xCCCCCC);
}
}
+18 -18
View File
@@ -1,18 +1,18 @@
package DummyCore.Client;
import DummyCore.Utils.IMainMenu;
public class MainMenuGUIRenderer {
public static IMainMenu currentScreenBeingRendered;
public static void setCurrentGUI(IMainMenu menu)
{
currentScreenBeingRendered = menu;
}
public static void initGui()
{
}
}
package DummyCore.Client;
import DummyCore.Utils.IMainMenu;
public class MainMenuGUIRenderer {
public static IMainMenu currentScreenBeingRendered;
public static void setCurrentGUI(IMainMenu menu)
{
currentScreenBeingRendered = menu;
}
public static void initGui()
{
}
}
+84 -84
View File
@@ -1,84 +1,84 @@
package DummyCore.Client;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiMainMenu;
import net.minecraft.client.gui.GuiScreen;
import DummyCore.Utils.DummyConfig;
import DummyCore.Utils.DummyData;
import DummyCore.Utils.IMainMenu;
import DummyCore.Utils.Notifier;
public class MainMenuRegistry {
public static List<Class<? extends GuiScreen>> menuList = new ArrayList();
public static List<DummyData> menuInfoLst = new ArrayList();
public static boolean isGuiDisplayed;
public static GuiScreen currentScreen;
public static void registerNewGui(Class menu)
{
if(IMainMenu.class.isAssignableFrom(menu))
{
menuList.add(menu);
menuInfoLst.add(new DummyData(menu.getName(),"No description provided by author ;("));
}else
{
Notifier.notifyCustomMod("DummyCore", "Attempting to register "+menu+" as a main menu, but the registered object does not implements IMainMenu!");
}
}
public static void registerNewGui(Class menu, String name, String description)
{
if(IMainMenu.class.isAssignableFrom(menu))
{
menuList.add(menu);
menuInfoLst.add(new DummyData(name,description));
}else
{
Notifier.notifyCustomMod("DummyCore", "Attempting to register "+menu+" as a main menu, but the registered object does not implements IMainMenu!");
}
}
public static void newMainMenu(int index)
{
try
{
if(menuList.size() < index)
{
index = menuList.size()-1;
}
DummyConfig.setMainMenu(index);
currentScreen = menuList.get(DummyConfig.getMainMenu()).newInstance();
Minecraft.getMinecraft().displayGuiScreen(currentScreen);
}catch(Exception e)
{
e.printStackTrace();
return;
}
}
public static GuiScreen getGuiDisplayed()
{
Minecraft mc = Minecraft.getMinecraft();
if(mc.currentScreen != null && mc.currentScreen.getClass() != GuiMainMenu.class && mc.currentScreen instanceof IMainMenu)
return mc.currentScreen;
if(currentScreen != null)
return currentScreen;
try
{
return menuList.get(DummyConfig.getMainMenu()).newInstance();
}
catch (Exception e)
{
e.printStackTrace();
return null;
}
}
}
package DummyCore.Client;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiMainMenu;
import net.minecraft.client.gui.GuiScreen;
import DummyCore.Utils.DummyConfig;
import DummyCore.Utils.DummyData;
import DummyCore.Utils.IMainMenu;
import DummyCore.Utils.Notifier;
public class MainMenuRegistry {
public static List<Class<? extends GuiScreen>> menuList = new ArrayList<Class<? extends GuiScreen>>();
public static List<DummyData> menuInfoLst = new ArrayList<DummyData>();
public static boolean isGuiDisplayed;
public static GuiScreen currentScreen;
public static void registerNewGui(Class<? extends GuiScreen> menu)
{
if(IMainMenu.class.isAssignableFrom(menu))
{
menuList.add(menu);
menuInfoLst.add(new DummyData(menu.getName(),"No description provided by author ;("));
}else
{
Notifier.notifyCustomMod("DummyCore", "Attempting to register "+menu+" as a main menu, but the registered object does not implements IMainMenu!");
}
}
public static void registerNewGui(Class<? extends GuiScreen> menu, String name, String description)
{
if(IMainMenu.class.isAssignableFrom(menu))
{
menuList.add(menu);
menuInfoLst.add(new DummyData(name,description));
}else
{
Notifier.notifyCustomMod("DummyCore", "Attempting to register "+menu+" as a main menu, but the registered object does not implements IMainMenu!");
}
}
public static void newMainMenu(int index)
{
try
{
if(menuList.size() < index)
{
index = menuList.size()-1;
}
DummyConfig.setMainMenu(index);
currentScreen = menuList.get(DummyConfig.getMainMenu()).newInstance();
Minecraft.getMinecraft().displayGuiScreen(currentScreen);
}catch(Exception e)
{
e.printStackTrace();
return;
}
}
public static GuiScreen getGuiDisplayed()
{
Minecraft mc = Minecraft.getMinecraft();
if(mc.currentScreen != null && mc.currentScreen.getClass() != GuiMainMenu.class && mc.currentScreen instanceof IMainMenu)
return mc.currentScreen;
if(currentScreen != null)
return currentScreen;
try
{
return menuList.get(DummyConfig.getMainMenu()).newInstance();
}
catch (Exception e)
{
e.printStackTrace();
return null;
}
}
}
Regular → Executable
+195 -222
View File
@@ -1,222 +1,195 @@
package DummyCore.Core;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.ConcurrentModificationException;
import java.util.HashMap;
import java.util.List;
import DummyCore.CreativeTabs.CreativePageBlocks;
import DummyCore.CreativeTabs.CreativePageItems;
import DummyCore.Utils.EnumLightColor;
import DummyCore.Utils.IDummyConfig;
import DummyCore.Utils.Notifier;
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraftforge.common.config.Configuration;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.registry.LanguageRegistry;
public class Core {
public static List lightBlocks = new ArrayList<Block>();
public static List<EnumLightColor> lightColors = new ArrayList<EnumLightColor>();
private static HashMap modList = new HashMap<Class,Integer>();
private static HashMap langFilesList = new HashMap<Integer,Configuration>();
private static HashMap configurationList = new HashMap<Integer,Configuration>();
private static List modNameList = new ArrayList<String>();
private static CreativeTabs[] blocksTabs = new CreativeTabs[512];
private static CreativeTabs[] itemsTabs = new CreativeTabs[512];
private static Configuration[] config = new Configuration[512];
private static IDummyConfig[] configurationHandlers = new IDummyConfig[512];
private static int modID;
private static boolean[] isConfigLoaded = new boolean[512];
private static void registerMod(Class c, String name) throws RuntimeException
{
if(!modList.containsKey(c))
{
int modId = getNextModId();
if(modId < 0 || modId >= 512)
{
throw new RuntimeException("Mod "+name+" is trying to be registered with wrong id "+modId);
}
modList.put(c, modId);
modNameList.add(modId, name);
blocksTabs[modId] = new CreativePageBlocks(name);
itemsTabs[modId] = new CreativePageItems(name);
Notifier.notifySimple("Mod with name "+name+" and classpath "+c.getName()+".class using ID "+modId+" has been succesfully registered!");
}else
{
throw new RuntimeException("Mod "+name+" is already registered!");
}
}
private static void registerLangFileForMod(Class c, String path) throws IOException
{
File f = new File(path,getModName(getIdForMod(c))+".lang");
if(!f.exists())
f.createNewFile();
Configuration config = new Configuration(f);
langFilesList.put(getIdForMod(c),config);
Notifier.notifySimple("Language File for mod "+getModName(getIdForMod(c))+" was successfully created with path "+path+getModName(getIdForMod(c))+".lang");
}
private static void registerConfigurationFileForMod(Class c, String path) throws IOException
{
File file = new File(path,getModName(getIdForMod(c))+".cfg");
if(!file.exists())
file.createNewFile();
config[getIdForMod(c)] = new Configuration(file);
config[getIdForMod(c)].save();
configurationList.put(getIdForMod(c), config);
Notifier.notifySimple("Configuration File for mod "+getModName(getIdForMod(c))+" was successfully created with path "+path+getModName(getIdForMod(c))+".cfg");
}
/**
* Use this in you Pre-Initiasisation functions. This will register your mod in the DummyCore system and automatically create all config and .lang files.
* From DummyCore v1.1 you no longer need to use IMCEvent to register all blocks and items.
* @param c - class file of your mod. MUST be registered from the mod itself. Use getClass().
* @param modname - this name will be used to name CreativeTabs, config and .lang files.
* @param configPath - the path to your configuration file. You can use FMLPreInitialisationEvent.getModConfigurationDirectory().getAbsolutePath() to get your path.
* @param config - the initialised! object, that implements IDummyConfig.
* @throws IOException - If something has gone wrong the game will give the corresponding error report.
* @version From DummyCore 1.0.
* @Warning From DummyCore 1.1 no longer the function registerConfigurationHandler must be called.
*
*/
public static void registerModAbsolute(Class c, String modname, String configPath, IDummyConfig config) throws IOException
{
registerMod(c,modname);
registerLangFileForMod(c,configPath);
registerConfigurationFileForMod(c,configPath);
registerConfigurationHandler(config,c);
loadConfigForMod(getIdForMod(c));
}
private static int getNextModId()
{
int i = 0;
while(i < 512)
{
if(!modList.containsValue(i))
{
break;
}
++i;
}
return i;
}
/**
* Used to get the ID of the mod using .class file.
* @param m - the class file of the mod.
* @return The corresponding ID of the mod.
* @version From DummyCore 1.0
*/
public static int getIdForMod(Class m)
{
if(modList.containsKey(m))
{
return (Integer)modList.get(m);
}
return 0;
}
/**
* Used to get the name of the mod using .class file.
* @param i - the id of the mod.
* @return The corresponding name of the mod.
* @version From DummyCore 1.0
*/
public static String getModName(int i)
{
return (String)modNameList.get(i);
}
/**
* Used to get the config file of the mod using .class file.
* @param c - the class file of the mod.
* @return The corresponding config file of the mod.
* @version From DummyCore 1.0
*/
public static Configuration getConfigFileForMod(Class c)
{
return config[getIdForMod(c)];
}
/**
* Used to get the lang file of the mod using .class file.
* @param c - the class file of the mod.
* @return The corresponding lang file of the mod.
* @version From DummyCore 1.0
*/
public static Configuration getLangFileForMod(Class c)
{
return (Configuration) langFilesList.get(getIdForMod(c));
}
/**
* Used to register new Configuration Handlers of the mod.
* @param config - the initialised! object, that implements IDummyConfig.
* @param c - the class file of the mod. Use getClass(). Should only be called in the mod itself.
* @throws RuntimeException
* @version From DummyCore 1.0
*/
private static void registerConfigurationHandler(IDummyConfig config, Class c) throws RuntimeException
{
int modId = getIdForMod(c);
if(configurationHandlers[modId] == null)
{
configurationHandlers[modId] = config;
}else
{
throw new RuntimeException("Configuration handler for mod "+getModName(modId)+" is already registered!");
}
}
private static void loadConfigForMod(int t) throws RuntimeException
{
if(!isConfigLoaded[t])
{
if(configurationHandlers[t] != null && config[t] != null)
{
config[t].load();
configurationHandlers[t].load(config[t]);
config[t].save();
}
else
if((configurationHandlers[t] == null && config[t] != null) || (configurationHandlers[t] != null && config[t] == null))
{
//throw new RuntimeException("Either the configuration handler for config was not registered, or the IConfig was not registered. The ID for both elements is "+t);
}
isConfigLoaded[t] = true;
}else
{
throw new RuntimeException("Configuration handler was already initialised!");
}
}
/**
* Use this to get the creativetab of all mod items.
* @param c - the .class file of the mod.
* @return The corresponding Creative Tab
* @version From DummyCore 1.0
*/
public static CreativeTabs getItemTabForMod(Class c)
{
return itemsTabs[getIdForMod(c)];
}
/**
* Use this to get the creativetab of all mod blocks.
* @param c - the .class file of the mod.
* @return The corresponding Creative Tab
* @version From DummyCore 1.0
*/
public static CreativeTabs getBlockTabForMod(Class c)
{
return blocksTabs[getIdForMod(c)];
}
}
package DummyCore.Core;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import DummyCore.CreativeTabs.CreativePageBlocks;
import DummyCore.CreativeTabs.CreativePageItems;
import DummyCore.Utils.EnumLightColor;
import DummyCore.Utils.IDummyConfig;
import DummyCore.Utils.Notifier;
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraftforge.common.config.Configuration;
public class Core {
public static List<Block> lightBlocks = new ArrayList<Block>();
public static List<EnumLightColor> lightColors = new ArrayList<EnumLightColor>();
private static HashMap<Class<?>, Integer> modList = new HashMap<Class<?>,Integer>();
private static HashMap<Integer, Configuration> configurationList = new HashMap<Integer,Configuration>();
private static List<String> modNameList = new ArrayList<String>();
private static CreativeTabs[] blocksTabs = new CreativeTabs[512];
private static CreativeTabs[] itemsTabs = new CreativeTabs[512];
private static Configuration[] config = new Configuration[512];
private static IDummyConfig[] configurationHandlers = new IDummyConfig[512];
private static boolean[] isConfigLoaded = new boolean[512];
private static void registerMod(Class<?> c, String name) throws RuntimeException
{
if(!modList.containsKey(c))
{
int modId = getNextModId();
if(modId < 0 || modId >= 512)
{
throw new RuntimeException("Mod "+name+" is trying to be registered with wrong id "+modId);
}
modList.put(c, modId);
modNameList.add(modId, name);
blocksTabs[modId] = new CreativePageBlocks(name);
itemsTabs[modId] = new CreativePageItems(name);
Notifier.notifySimple("Mod with name "+name+" and classpath "+c.getName()+".class using ID "+modId+" has been succesfully registered!");
}else
{
throw new RuntimeException("Mod "+name+" is already registered!");
}
}
private static void registerConfigurationFileForMod(Class<?> c, String path) throws IOException
{
File file = new File(path,getModName(getIdForMod(c))+".cfg");
if(!file.exists())
file.createNewFile();
config[getIdForMod(c)] = new Configuration(file);
config[getIdForMod(c)].save();
configurationList.put(getIdForMod(c), config[getIdForMod(c)]);
Notifier.notifySimple("Configuration File for mod "+getModName(getIdForMod(c))+" was successfully created with path "+path+getModName(getIdForMod(c))+".cfg");
}
/**
* Use this in you Pre-Initiasisation functions. This will register your mod in the DummyCore system and automatically create all config and .lang files.
* From DummyCore v1.1 you no longer need to use IMCEvent to register all blocks and items.
* @param c - class file of your mod. MUST be registered from the mod itself. Use getClass().
* @param modname - this name will be used to name CreativeTabs, config and .lang files.
* @param configPath - the path to your configuration file. You can use FMLPreInitialisationEvent.getModConfigurationDirectory().getAbsolutePath() to get your path.
* @param config - the initialised! object, that implements IDummyConfig.
* @throws IOException - If something has gone wrong the game will give the corresponding error report.
* @version From DummyCore 1.0.
* @Warning From DummyCore 1.1 no longer the function registerConfigurationHandler must be called.
*
*/
public static void registerModAbsolute(Class<?> c, String modname, String configPath, IDummyConfig config) throws IOException
{
registerMod(c,modname);
registerConfigurationFileForMod(c,configPath);
registerConfigurationHandler(config,c);
loadConfigForMod(getIdForMod(c));
}
private static int getNextModId()
{
int i = 0;
while(i < 512)
{
if(!modList.containsValue(i))
{
break;
}
++i;
}
return i;
}
/**
* Used to get the ID of the mod using .class file.
* @param m - the class file of the mod.
* @return The corresponding ID of the mod.
* @version From DummyCore 1.0
*/
public static int getIdForMod(Class<?> m)
{
if(modList.containsKey(m))
{
return (Integer)modList.get(m);
}
return 0;
}
/**
* Used to get the name of the mod using .class file.
* @param i - the id of the mod.
* @return The corresponding name of the mod.
* @version From DummyCore 1.0
*/
public static String getModName(int i)
{
return (String)modNameList.get(i);
}
/**
* Used to get the config file of the mod using .class file.
* @param c - the class file of the mod.
* @return The corresponding config file of the mod.
* @version From DummyCore 1.0
*/
public static Configuration getConfigFileForMod(Class<?> c)
{
return config[getIdForMod(c)];
}
/**
* Used to register new Configuration Handlers of the mod.
* @param config - the initialised! object, that implements IDummyConfig.
* @param c - the class file of the mod. Use getClass(). Should only be called in the mod itself.
* @throws RuntimeException
* @version From DummyCore 1.0
*/
private static void registerConfigurationHandler(IDummyConfig config, Class<?> c) throws RuntimeException
{
int modId = getIdForMod(c);
if(configurationHandlers[modId] == null)
{
configurationHandlers[modId] = config;
}else
{
throw new RuntimeException("Configuration handler for mod "+getModName(modId)+" is already registered!");
}
}
private static void loadConfigForMod(int t) throws RuntimeException
{
if(!isConfigLoaded[t])
{
if(configurationHandlers[t] != null && config[t] != null)
{
config[t].load();
configurationHandlers[t].load(config[t]);
config[t].save();
}
else
if((configurationHandlers[t] == null && config[t] != null) || (configurationHandlers[t] != null && config[t] == null))
{
//throw new RuntimeException("Either the configuration handler for config was not registered, or the IConfig was not registered. The ID for both elements is "+t);
}
isConfigLoaded[t] = true;
}else
{
throw new RuntimeException("Configuration handler was already initialised!");
}
}
/**
* Use this to get the creativetab of all mod items.
* @param c - the .class file of the mod.
* @return The corresponding Creative Tab
* @version From DummyCore 1.0
*/
public static CreativeTabs getItemTabForMod(Class<?> c)
{
return itemsTabs[getIdForMod(c)];
}
/**
* Use this to get the creativetab of all mod blocks.
* @param c - the .class file of the mod.
* @return The corresponding Creative Tab
* @version From DummyCore 1.0
*/
public static CreativeTabs getBlockTabForMod(Class<?> c)
{
return blocksTabs[getIdForMod(c)];
}
}
+184 -150
View File
@@ -1,150 +1,184 @@
package DummyCore.Core;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
import org.apache.commons.io.HexDump;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import net.minecraft.block.Block;
import net.minecraft.command.CommandHandler;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.server.MinecraftServer;
import net.minecraftforge.common.MinecraftForge;
import DummyCore.Blocks.BlocksRegistry;
import DummyCore.Client.GuiMainMenuVanilla;
import DummyCore.Client.MainMenuRegistry;
import DummyCore.Items.ItemRegistry;
import DummyCore.Utils.ColoredLightHandler;
import DummyCore.Utils.CommandTransfer;
import DummyCore.Utils.DummyConfig;
import DummyCore.Utils.DummyDataUtils;
import DummyCore.Utils.DummyEventHandler;
import DummyCore.Utils.DummyPacketHandler;
import DummyCore.Utils.DummyPacketIMSG;
import DummyCore.Utils.DummyPacketIMSG_Tile;
import DummyCore.Utils.DummyTilePacketHandler;
import DummyCore.Utils.EnumLightColor;
import DummyCore.Utils.MathUtils;
import DummyCore.Utils.NetProxy_Server;
import DummyCore.Utils.Notifier;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.DummyModContainer;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Metadata;
import cpw.mods.fml.common.ModMetadata;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLInterModComms.IMCEvent;
import cpw.mods.fml.common.event.FMLServerAboutToStartEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.event.FMLServerStoppedEvent;
import cpw.mods.fml.common.event.FMLServerStoppingEvent;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper;
import cpw.mods.fml.common.registry.EntityRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
/**
* @author Modbder
* @version From DummyCore 1.0
*/
@Mod(modid = "DummyCore", name = "DummyCore", version = "1.10", useMetadata = false)
public class CoreInitialiser{
public static CoreInitialiser instance;
public static DummyConfig cfg = new DummyConfig();
public static SimpleNetworkWrapper network;
@SidedProxy(clientSide = "DummyCore.Utils.NetProxy_Client",serverSide = "DummyCore.Utils.NetProxy_Server")
public static NetProxy_Server proxy;
public static final DummyPacketHandler packetHandler = new DummyPacketHandler();
@EventHandler
public void preInit(FMLPreInitializationEvent e)
{
e.getModMetadata().autogenerated = false;
e.getModMetadata().modId = "DummyCore";
e.getModMetadata().name="Dummy Core";
e.getModMetadata().version = "1.10";
e.getModMetadata().credits = "Modbder";
e.getModMetadata().authorList= Arrays.asList(new String[] {
"Dummy Thinking Team; Modbder; TheDen2099"
});
e.getModMetadata().description="Dummy Core is a required package to launch mods made by Dummy Thinking team.";
if(instance == null) instance = this;
network = NetworkRegistry.INSTANCE.newSimpleChannel("DummyCore");
network.registerMessage(DummyPacketHandler.class, DummyPacketIMSG.class, 0, Side.SERVER);
network.registerMessage(DummyPacketHandler.class, DummyPacketIMSG.class, 0, Side.CLIENT);
network.registerMessage(DummyTilePacketHandler.class, DummyPacketIMSG_Tile.class, 1, Side.SERVER);
network.registerMessage(DummyTilePacketHandler.class, DummyPacketIMSG_Tile.class, 1, Side.CLIENT);
try
{
Core.registerModAbsolute(getClass(), "DummyCore", e.getModConfigurationDirectory().getAbsolutePath(),cfg);
}catch(Exception ex)
{
System.out.println("Oh, come on Forge. If something has got wrong here - this is it.");
System.out.println("No, reriously, if an exception is bbeing thrown here - nothing is going to load");
System.out.println("Like, even the gam itself, since an exception here means File System error.");
System.out.println("And a file system error here -> impossible to create literally any file in directory!");
System.out.println("But when I'm trying to set a System.exit(-1) here - oww, not allowed?");
System.out.println("Fine, I can work without it... Reflection time!");
try
{
Class system = System.class;
Method exit = system.getMethod("exit", int.class);
exit.invoke(null, -1);
}catch(Exception exc)
{
exc.printStackTrace();
return;
}
}
Side s = FMLCommonHandler.instance().getEffectiveSide();
MinecraftForge.EVENT_BUS.register(new DummyEventHandler());
MinecraftForge.EVENT_BUS.register(new DummyDataUtils());
FMLCommonHandler.instance().bus().register(new DummyEventHandler());
proxy.registerInfo();
}
@EventHandler
public void init(FMLInitializationEvent e)
{
NetworkRegistry.INSTANCE.registerGuiHandler(instance, proxy);
proxy.registerInit();
}
@Deprecated
@EventHandler
public void onServerStart(FMLServerAboutToStartEvent e)
{
//DummyDataUtils.load(e);
}
@EventHandler
public void onServerStop(FMLServerStoppedEvent e)
{
DummyDataUtils.stop();
}
@EventHandler
public void serverStart(FMLServerStartingEvent event)
{
MinecraftServer mcserver = event.getServer();
((CommandHandler)mcserver.getCommandManager()).registerCommand(new CommandTransfer());
}
}
package DummyCore.Core;
import java.lang.reflect.Method;
import java.util.Arrays;
import net.minecraft.command.CommandHandler;
import net.minecraft.server.MinecraftServer;
import net.minecraftforge.common.MinecraftForge;
import DummyCore.Utils.CommandTransfer;
import DummyCore.Utils.DummyConfig;
import DummyCore.Utils.DummyDataUtils;
import DummyCore.Utils.DummyEventHandler;
import DummyCore.Utils.DummyPacketHandler;
import DummyCore.Utils.DummyPacketIMSG;
import DummyCore.Utils.DummyPacketIMSG_Tile;
import DummyCore.Utils.DummyTilePacketHandler;
import DummyCore.Utils.NetProxy_Server;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.ModMetadata;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerAboutToStartEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.event.FMLServerStoppedEvent;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper;
import cpw.mods.fml.relauncher.Side;
/**
* @author Modbder
* @version From DummyCore 1.0
*/
@Mod(modid = "DummyCore", name = "DummyCore", version = "1.11", useMetadata = false)
public class CoreInitialiser{
public static final String modid = "DummyCore";
public static final String modname = "DummyCore";
public static final String version = "1.11";
public static CoreInitialiser instance;
public static DummyConfig cfg = new DummyConfig();
public static SimpleNetworkWrapper network;
@SidedProxy(clientSide = "DummyCore.Utils.NetProxy_Client",serverSide = "DummyCore.Utils.NetProxy_Server")
public static NetProxy_Server proxy;
public static final DummyPacketHandler packetHandler = new DummyPacketHandler();
/*
@Subscribe
public void constructMod(FMLConstructionEvent event)
{
System.out.println(event);
System.out.println(this);
System.out.println(languageAdapter);
System.out.println(event.getASMHarvestedData().getAnnotationsFor(this));
Set<ASMData> targets = event.getASMHarvestedData().getAnnotationsFor(this).get(SidedProxy.class.getName());
System.out.println(targets.size());
System.out.println(targets);
System.out.println(targets.isEmpty());
NetworkRegistry.INSTANCE.register(this, this.getClass(), null, event.getASMHarvestedData());
ProxyInjector.inject(this, event.getASMHarvestedData(), FMLCommonHandler.instance().getSide(), languageAdapter);
}
*/
public CoreInitialiser()
{
/*
super(initMetadata());
instance = this;
languageAdapter = new ILanguageAdapter.JavaAdapter();
*/
}
/*
@Override
public boolean registerBus(EventBus bus, LoadController controller)
{
bus.register(instance);
return true;
}
@Override
public Object getMod()
{
return instance;
}
*/
public static ModMetadata initMetadata()
{
ModMetadata meta = new ModMetadata();
meta.autogenerated = false;
meta.modId = modid;
meta.name = modname;
meta.version = version;
meta.credits = "Modbder";
meta.authorList= Arrays.asList(new String[] {
"Dummy Thinking Team; Modbder; TheDen2099"
});
meta.description="Dummy Core is a required package to launch mods made by Dummy Thinking team.";
return meta;
}
@EventHandler
public void preInit(FMLPreInitializationEvent e)
{
ModMetadata meta = e.getModMetadata();
meta.autogenerated = false;
meta.modId = modid;
meta.name = modname;
meta.version = version;
meta.credits = "Modbder";
meta.authorList= Arrays.asList(new String[] {
"Dummy Thinking Team; Modbder; TheDen2099"
});
meta.description="Dummy Core is a required package to launch mods made by Dummy Thinking team.";
if(instance == null) instance = this;
network = NetworkRegistry.INSTANCE.newSimpleChannel("DummyCore");
network.registerMessage(DummyPacketHandler.class, DummyPacketIMSG.class, 0, Side.SERVER);
network.registerMessage(DummyPacketHandler.class, DummyPacketIMSG.class, 0, Side.CLIENT);
network.registerMessage(DummyTilePacketHandler.class, DummyPacketIMSG_Tile.class, 1, Side.SERVER);
network.registerMessage(DummyTilePacketHandler.class, DummyPacketIMSG_Tile.class, 1, Side.CLIENT);
try
{
Core.registerModAbsolute(getClass(), "DummyCore", e.getModConfigurationDirectory().getAbsolutePath(),cfg);
}catch(Exception ex)
{
System.out.println("Oh, come on Forge. If something has got wrong here - this is it.");
System.out.println("No, reriously, if an exception is bbeing thrown here - nothing is going to load");
System.out.println("Like, even the gam itself, since an exception here means File System error.");
System.out.println("And a file system error here -> impossible to create literally any file in directory!");
System.out.println("But when I'm trying to set a System.exit(-1) here - oww, not allowed?");
System.out.println("Fine, I can work without it... Reflection time!");
try
{
Class<System> system = System.class;
Method exit = system.getMethod("exit", int.class);
exit.invoke(null, -1);
}catch(Exception exc)
{
exc.printStackTrace();
return;
}
}
MinecraftForge.EVENT_BUS.register(new DummyEventHandler());
MinecraftForge.EVENT_BUS.register(new DummyDataUtils());
FMLCommonHandler.instance().bus().register(new DummyEventHandler());
proxy.registerInfo();
}
@EventHandler
public void init(FMLInitializationEvent e)
{
NetworkRegistry.INSTANCE.registerGuiHandler(instance, proxy);
proxy.registerInit();
}
@Deprecated
@EventHandler
public void onServerStart(FMLServerAboutToStartEvent e)
{
//DummyDataUtils.load(e);
}
@EventHandler
public void onServerStop(FMLServerStoppedEvent e)
{
DummyDataUtils.stop();
}
@EventHandler
public void serverStart(FMLServerStartingEvent event)
{
MinecraftServer mcserver = event.getServer();
((CommandHandler)mcserver.getCommandManager()).registerCommand(new CommandTransfer());
}
}
+84 -100
View File
@@ -1,101 +1,85 @@
package DummyCore.CreativeTabs;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.UUID;
import DummyCore.Blocks.BlocksRegistry;
import DummyCore.Core.CoreInitialiser;
import DummyCore.Utils.DummyConfig;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
/**
* @version From DummyCore 1.0
* @author Modbder
* Do not change anything here! Used to work with Blocks.
*/
public final class CreativePageBlocks extends CreativeTabs{
public int delayTime = 0;
public ItemStack displayStack = new ItemStack(Blocks.crafting_table,1,0);
private static Random rand = new Random(543643456);
private final String tabLabel;
public List<ItemStack> blockList = new ArrayList();
public int tries = 0;
public CreativePageBlocks(String m) {
super(m + " Blocks");
tabLabel = m + " Blocks";
}
public ItemStack getIconItemStack()
{
CoreInitialiser.proxy.choseDisplayStack(this);
return this.displayStack;
}
private void chooseRandomStack()
{
}
public List<ItemStack> initialiseBlocksList()
{
++tries;
if(this.blockList.isEmpty() && tries <= 1)
{
int i = 0;
for(int t = 0; t < Block.blockRegistry.getKeys().size(); ++t)
{
Block b = Block.getBlockFromName((String) Block.blockRegistry.getKeys().toArray()[t]);
if(b != null && b.getCreativeTabToDisplayOn() == this)
{
Item itm = Item.getItemFromBlock(b);
if(itm != null)
{
List<ItemStack> lst = new ArrayList();
itm.getSubItems(itm,this,lst);
if(!lst.isEmpty())
{
for(ItemStack stk : lst)
{
if(stk != null)
{
this.blockList.add(stk);
}
}
}
}
}
}
return blockList;
}else
{
return this.blockList;
}
}
@SideOnly(Side.CLIENT)
@Override
public String getTranslatedTabLabel()
{
return this.tabLabel;
}
@Override
public Item getTabIconItem() {
return displayStack.getItem();
}
package DummyCore.CreativeTabs;
import java.util.ArrayList;
import java.util.List;
import DummyCore.Core.CoreInitialiser;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
/**
* @version From DummyCore 1.0
* @author Modbder
* Do not change anything here! Used to work with Blocks.
*/
public final class CreativePageBlocks extends CreativeTabs{
public int delayTime = 0;
public ItemStack displayStack = new ItemStack(Blocks.crafting_table,1,0);
private final String tabLabel;
public List<ItemStack> blockList = new ArrayList<ItemStack>();
public int tries = 0;
public CreativePageBlocks(String m) {
super(m + " Blocks");
tabLabel = m + " Blocks";
}
public ItemStack getIconItemStack()
{
CoreInitialiser.proxy.choseDisplayStack(this);
return this.displayStack;
}
public List<ItemStack> initialiseBlocksList()
{
++tries;
if(this.blockList.isEmpty() && tries <= 1)
{
for(int t = 0; t < Block.blockRegistry.getKeys().size(); ++t)
{
Block b = Block.getBlockFromName((String) Block.blockRegistry.getKeys().toArray()[t]);
if(b != null && b.getCreativeTabToDisplayOn() == this)
{
Item itm = Item.getItemFromBlock(b);
if(itm != null)
{
List<ItemStack> lst = new ArrayList<ItemStack>();
itm.getSubItems(itm,this,lst);
if(!lst.isEmpty())
{
for(ItemStack stk : lst)
{
if(stk != null)
{
this.blockList.add(stk);
}
}
}
}
}
}
return blockList;
}else
{
return this.blockList;
}
}
@SideOnly(Side.CLIENT)
@Override
public String getTranslatedTabLabel()
{
return this.tabLabel;
}
@Override
public Item getTabIconItem() {
return displayStack.getItem();
}
}
+81 -100
View File
@@ -1,101 +1,82 @@
package DummyCore.CreativeTabs;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.UUID;
import DummyCore.Blocks.BlocksRegistry;
import DummyCore.Core.CoreInitialiser;
import DummyCore.Items.ItemRegistry;
import DummyCore.Utils.DummyConfig;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
/**
* @version From DummyCore 1.0
* @author Modbder
* Do not change anything here! Used to work with Items.
*/
public final class CreativePageItems extends CreativeTabs{
public int delayTime = 0;
public ItemStack displayStack = new ItemStack((Item) Items.iron_axe,1,0);
private static Random rand = new Random(965448655);
private final String tabLabel;
public List<ItemStack> itemList = new ArrayList();
public int tries = 0;
public CreativePageItems(String m) {
super(m + " Items");
tabLabel = m + " Items";
}
@Override
public ItemStack getIconItemStack()
{
CoreInitialiser.proxy.choseDisplayStack(this);
return this.displayStack;
}
private void chooseRandomStack()
{
}
public List<ItemStack> initialiseItemsList()
{
++tries;
if(this.itemList.isEmpty() && tries <= 1)
{
int i = 0;
for(int t = 0; t < Item.itemRegistry.getKeys().size(); ++t)
{
Item itm = (Item) Item.itemRegistry.getObject(Item.itemRegistry.getKeys().toArray()[t]);
if(itm != null && itm.getCreativeTab() == this)
{
List<ItemStack> lst = new ArrayList();
itm.getSubItems(itm,this,lst);
if(!lst.isEmpty())
{
for(ItemStack stk : lst)
{
if(stk != null)
{
this.itemList.add(stk);
}
}
}
}
}
return this.itemList;
}else
{
return this.itemList;
}
}
@SideOnly(Side.CLIENT)
@Override
public String getTranslatedTabLabel()
{
return this.tabLabel;
}
@Override
public Item getTabIconItem() {
// TODO Auto-generated method stub
return (Item) Item.itemRegistry.getObject("minecraft:iron_axe");
}
package DummyCore.CreativeTabs;
import java.util.ArrayList;
import java.util.List;
import DummyCore.Core.CoreInitialiser;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
/**
* @version From DummyCore 1.0
* @author Modbder
* Do not change anything here! Used to work with Items.
*/
public final class CreativePageItems extends CreativeTabs{
public int delayTime = 0;
public ItemStack displayStack = new ItemStack((Item) Items.iron_axe,1,0);
private final String tabLabel;
public List<ItemStack> itemList = new ArrayList<ItemStack>();
public int tries = 0;
public CreativePageItems(String m) {
super(m + " Items");
tabLabel = m + " Items";
}
@Override
public ItemStack getIconItemStack()
{
CoreInitialiser.proxy.choseDisplayStack(this);
return this.displayStack;
}
public List<ItemStack> initialiseItemsList()
{
++tries;
if(this.itemList.isEmpty() && tries <= 1)
{
for(int t = 0; t < Item.itemRegistry.getKeys().size(); ++t)
{
Item itm = (Item) Item.itemRegistry.getObject(Item.itemRegistry.getKeys().toArray()[t]);
if(itm != null && itm.getCreativeTab() == this)
{
List<ItemStack> lst = new ArrayList<ItemStack>();
itm.getSubItems(itm,this,lst);
if(!lst.isEmpty())
{
for(ItemStack stk : lst)
{
if(stk != null)
{
this.itemList.add(stk);
}
}
}
}
}
return this.itemList;
}else
{
return this.itemList;
}
}
@SideOnly(Side.CLIENT)
@Override
public String getTranslatedTabLabel()
{
return this.tabLabel;
}
@Override
public Item getTabIconItem() {
// TODO Auto-generated method stub
return (Item) Item.itemRegistry.getObject("minecraft:iron_axe");
}
}
+28 -29
View File
@@ -1,29 +1,28 @@
package DummyCore.Events;
import DummyCore.Utils.DataStorage;
import DummyCore.Utils.DummyData;
import cpw.mods.fml.common.eventhandler.Event;
import net.minecraft.entity.player.EntityPlayer;
public class DummyEvent_OnClientGUIButtonPress extends Event{
public int buttonID;
public String client_ParentClassPath;
public String client_ButtonClassPath;
public EntityPlayer presser;
public int x, y, z;
public DummyData[] additionalData;
public DummyEvent_OnClientGUIButtonPress(int bID, String s, String s_1, EntityPlayer player,int dx, int dy, int dz, DummyData[] data)
{
buttonID = bID;
client_ParentClassPath = s;
client_ButtonClassPath = s_1;
presser = player;
x = dx;
y = dy;
z = dz;
additionalData = data;
}
}
package DummyCore.Events;
import DummyCore.Utils.DummyData;
import cpw.mods.fml.common.eventhandler.Event;
import net.minecraft.entity.player.EntityPlayer;
public class DummyEvent_OnClientGUIButtonPress extends Event{
public int buttonID;
public String client_ParentClassPath;
public String client_ButtonClassPath;
public EntityPlayer presser;
public int x, y, z;
public DummyData[] additionalData;
public DummyEvent_OnClientGUIButtonPress(int bID, String s, String s_1, EntityPlayer player,int dx, int dy, int dz, DummyData[] data)
{
buttonID = bID;
client_ParentClassPath = s;
client_ButtonClassPath = s_1;
presser = player;
x = dx;
y = dy;
z = dz;
additionalData = data;
}
}
+21 -21
View File
@@ -1,21 +1,21 @@
package DummyCore.Events;
import net.minecraft.entity.player.EntityPlayer;
import cpw.mods.fml.common.eventhandler.Event;
public class DummyEvent_OnKeyboardKeyPressed_Server extends Event{
public int keyID;
public String keyName;
public EntityPlayer presser;
public boolean pressed;
public DummyEvent_OnKeyboardKeyPressed_Server(int keyId, String keyname, EntityPlayer player, boolean bool)
{
keyID = keyId;
keyName = keyname;
presser = player;
pressed = bool;
}
}
package DummyCore.Events;
import net.minecraft.entity.player.EntityPlayer;
import cpw.mods.fml.common.eventhandler.Event;
public class DummyEvent_OnKeyboardKeyPressed_Server extends Event{
public int keyID;
public String keyName;
public EntityPlayer presser;
public boolean pressed;
public DummyEvent_OnKeyboardKeyPressed_Server(int keyId, String keyname, EntityPlayer player, boolean bool)
{
keyID = keyId;
keyName = keyname;
presser = player;
pressed = bool;
}
}
+27 -27
View File
@@ -1,27 +1,27 @@
package DummyCore.Events;
import net.minecraft.entity.player.EntityPlayer;
import cpw.mods.fml.common.eventhandler.Event;
import cpw.mods.fml.relauncher.Side;
/**
*
* @author Modbder
* @version From DummyCore 1.7
* @Description Now all packets work on Events.
*/
public class DummyEvent_OnPacketRecieved extends Event{
public final Side effectiveSide;
public final String recievedData;
public final EntityPlayer recievedEntity;
public DummyEvent_OnPacketRecieved(Side s, String str, EntityPlayer pl)
{
effectiveSide = s;
recievedData = str;
recievedEntity = pl;
}
}
package DummyCore.Events;
import net.minecraft.entity.player.EntityPlayer;
import cpw.mods.fml.common.eventhandler.Event;
import cpw.mods.fml.relauncher.Side;
/**
*
* @author Modbder
* @version From DummyCore 1.7
* @Description Now all packets work on Events.
*/
public class DummyEvent_OnPacketRecieved extends Event{
public final Side effectiveSide;
public final String recievedData;
public final EntityPlayer recievedEntity;
public DummyEvent_OnPacketRecieved(Side s, String str, EntityPlayer pl)
{
effectiveSide = s;
recievedData = str;
recievedEntity = pl;
}
}
+62 -68
View File
@@ -1,68 +1,62 @@
package DummyCore.Items;
import java.util.Hashtable;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraftforge.common.config.Configuration;
import DummyCore.Core.Core;
import DummyCore.Core.CoreInitialiser;
import DummyCore.Utils.IDummyMultiItem;
import DummyCore.Utils.Notifier;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import cpw.mods.fml.relauncher.Side;
/**
*
* @author Modbder
* @version From DummyCore 1.0
* @Description Use this class to register new items in your game.
* This will automatically add your items to the corresponding creative tab
*/
public class ItemRegistry {
/**
* Used to check the creative tab item belongs to
*/
public static Hashtable<Item,String> itemsList = new Hashtable();
/**
* Use this to register new simple items.
* @version From DummyCore 1.0
* @param i - the item to be registered.
* @param name - name of the item in the itemregistry
* @param modClass - class file of your mod. If registered from the mod itself, use getClass(), else just put in this field something like YourModClassName.class
*/
public static void registerItem(Item i, String name, Class modClass)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
i.setCreativeTab(Core.getItemTabForMod(modClass));
itemsList.put(i, Core.getItemTabForMod(modClass).getTabLabel());
}
GameRegistry.registerItem(i, name);
}
/**
* Use this to register new simple items.
* @version From DummyCore 1.0
* @param i - the item to be registered.
* @param modClass - class file of your mod. If registered from the mod itself, use getClass(), else just put in this field something like YourModClassName.class
*/
@Deprecated
public static void registerItem(Item i, Class modClass)
{
//Notifier.notifyCustomMod("DummyCore", "[Warning] Mod "+Core.getModName(Core.getIdForMod(modClass))+" tries to register items in an outdated way, may cause errors!");
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
i.setCreativeTab(Core.getItemTabForMod(modClass));
itemsList.put(i, Core.getItemTabForMod(modClass).getTabLabel());
}
}
}
package DummyCore.Items;
import java.util.Hashtable;
import net.minecraft.item.Item;
import DummyCore.Core.Core;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
/**
*
* @author Modbder
* @version From DummyCore 1.0
* @Description Use this class to register new items in your game.
* This will automatically add your items to the corresponding creative tab
*/
public class ItemRegistry {
/**
* Used to check the creative tab item belongs to
*/
public static Hashtable<Item,String> itemsList = new Hashtable<Item, String>();
/**
* Use this to register new simple items.
* @version From DummyCore 1.0
* @param i - the item to be registered.
* @param name - name of the item in the itemregistry
* @param modClass - class file of your mod. If registered from the mod itself, use getClass(), else just put in this field something like YourModClassName.class
*/
public static void registerItem(Item i, String name, Class<?> modClass)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
i.setCreativeTab(Core.getItemTabForMod(modClass));
itemsList.put(i, Core.getItemTabForMod(modClass).getTabLabel());
}
GameRegistry.registerItem(i, name);
}
/**
* Use this to register new simple items.
* @version From DummyCore 1.0
* @param i - the item to be registered.
* @param modClass - class file of your mod. If registered from the mod itself, use getClass(), else just put in this field something like YourModClassName.class
*/
@Deprecated
public static void registerItem(Item i, Class<?> modClass)
{
//Notifier.notifyCustomMod("DummyCore", "[Warning] Mod "+Core.getModName(Core.getIdForMod(modClass))+" tries to register items in an outdated way, may cause errors!");
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
i.setCreativeTab(Core.getItemTabForMod(modClass));
itemsList.put(i, Core.getItemTabForMod(modClass).getTabLabel());
}
}
}
+28 -28
View File
@@ -1,28 +1,28 @@
package DummyCore.Utils;
import net.minecraft.block.Block;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class BlockPosition {
public int x;
public int y;
public int z;
public Block blk;
public int metadata;
public TileEntity blockTile;
public World wrld;
public BlockPosition(World w, int posX, int posY, int posZ)
{
wrld = w;
x = posX;
y = posY;
z = posZ;
blk = w.getBlock(posX, posY, posZ);
metadata = w.getBlockMetadata(posX, posY, posZ);
blockTile = w.getTileEntity(posX, posY, posZ);
}
}
package DummyCore.Utils;
import net.minecraft.block.Block;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class BlockPosition {
public int x;
public int y;
public int z;
public Block blk;
public int metadata;
public TileEntity blockTile;
public World wrld;
public BlockPosition(World w, int posX, int posY, int posZ)
{
wrld = w;
x = posX;
y = posY;
z = posZ;
blk = w.getBlock(posX, posY, posZ);
metadata = w.getBlockMetadata(posX, posY, posZ);
blockTile = w.getTileEntity(posX, posY, posZ);
}
}
+86 -95
View File
@@ -1,95 +1,86 @@
package DummyCore.Utils;
import DummyCore.Core.Core;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
public class ColoredLightHandler extends Entity{
private int renderColor;
private float colorSize;
public ColoredLightHandler(World par1World) {
super(par1World);
setSize(0.4F,0.4F);
this.renderColor = 0;
this.colorSize = 0;
this.noClip = true;
this.ignoreFrustumCheck = true;
}
public ColoredLightHandler(World par1World, int par2) {
this(par1World);
this.renderColor = par2;
}
public ColoredLightHandler(World par1World, int par2, float par3) {
this(par1World);
this.renderColor = par2;
this.colorSize = par3;
}
@Override
protected void entityInit() {
this.dataWatcher.addObject(12, 0);
this.dataWatcher.addObject(13, 0.0F);
}
@Override
protected void readEntityFromNBT(NBTTagCompound nbttagcompound) {
setColor(nbttagcompound.getInteger("color"));
setColorSize(nbttagcompound.getFloat("colorSize"));
}
@Override
protected void writeEntityToNBT(NBTTagCompound nbttagcompound) {
nbttagcompound.setInteger("color", getRenderColor());
nbttagcompound.setFloat("colorSize", getRenderColorSize());
}
private void setColor(int i)
{
if(!this.worldObj.isRemote)
{
this.dataWatcher.updateObject(12, i);
}
this.renderColor = i;
}
private void setColorSize(float i)
{
if(!this.worldObj.isRemote)
{
this.dataWatcher.updateObject(13, i);
}
this.colorSize = i;
}
public int getRenderColor()
{
return this.dataWatcher.getWatchableObjectInt(12);
}
public float getRenderColorSize()
{
return this.dataWatcher.getWatchableObjectFloat(13);
}
@Override
public void moveEntity(double par1, double par3, double par5){}
@Override
public void onUpdate()
{
this.posY = (int)this.posY;
Block b = MiscUtils.getBlock(worldObj, (int)posX, (int)posY-1, (int)posZ);
Block b1 = MiscUtils.getBlock(worldObj, (int)posX, (int)posY, (int)posZ);
if((b == null && b1 == null) || (!Core.lightBlocks.contains(b) && !Core.lightBlocks.contains(b1)))
{
this.setDead();
}
super.onUpdate();
}
}
package DummyCore.Utils;
import DummyCore.Core.Core;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
public class ColoredLightHandler extends Entity{
public ColoredLightHandler(World par1World) {
super(par1World);
setSize(0.4F,0.4F);
this.noClip = true;
this.ignoreFrustumCheck = true;
}
public ColoredLightHandler(World par1World, int par2) {
this(par1World);
}
public ColoredLightHandler(World par1World, int par2, float par3) {
this(par1World);
}
@Override
protected void entityInit() {
this.dataWatcher.addObject(12, 0);
this.dataWatcher.addObject(13, 0.0F);
}
@Override
protected void readEntityFromNBT(NBTTagCompound nbttagcompound) {
setColor(nbttagcompound.getInteger("color"));
setColorSize(nbttagcompound.getFloat("colorSize"));
}
@Override
protected void writeEntityToNBT(NBTTagCompound nbttagcompound) {
nbttagcompound.setInteger("color", getRenderColor());
nbttagcompound.setFloat("colorSize", getRenderColorSize());
}
private void setColor(int i)
{
if(!this.worldObj.isRemote)
{
this.dataWatcher.updateObject(12, i);
}
}
private void setColorSize(float i)
{
if(!this.worldObj.isRemote)
{
this.dataWatcher.updateObject(13, i);
}
}
public int getRenderColor()
{
return this.dataWatcher.getWatchableObjectInt(12);
}
public float getRenderColorSize()
{
return this.dataWatcher.getWatchableObjectFloat(13);
}
@Override
public void moveEntity(double par1, double par3, double par5){}
@SuppressWarnings("deprecation")
@Override
public void onUpdate()
{
this.posY = (int)this.posY;
Block b = MiscUtils.getBlock(worldObj, (int)posX, (int)posY-1, (int)posZ);
Block b1 = MiscUtils.getBlock(worldObj, (int)posX, (int)posY, (int)posZ);
if((b == null && b1 == null) || (!Core.lightBlocks.contains(b) && !Core.lightBlocks.contains(b1)))
{
this.setDead();
}
super.onUpdate();
}
}
+29 -29
View File
@@ -1,29 +1,29 @@
package DummyCore.Utils;
import net.minecraft.command.CommandBase;
import net.minecraft.command.ICommandSender;
import net.minecraft.entity.player.EntityPlayerMP;
public class CommandTransfer extends CommandBase {
@Override
public String getCommandName() {
// TODO Auto-generated method stub
return "DummyCore.Transfer";
}
@Override
public String getCommandUsage(ICommandSender p_71518_1_) {
// TODO Auto-generated method stub
return "/DummyCore.Transfer <player> <dimensionID>";
}
@Override
public void processCommand(ICommandSender p_71515_1_, String[] p_71515_2_) {
// TODO Auto-generated method stub
int var3 = parseIntWithMin(p_71515_1_, p_71515_2_[1], Integer.MIN_VALUE);
EntityPlayerMP player = p_71515_2_.length == 0 ? getCommandSenderAsPlayer(p_71515_1_) : getPlayer(p_71515_1_, p_71515_2_[0]);
player.travelToDimension(var3);
}
}
package DummyCore.Utils;
import net.minecraft.command.CommandBase;
import net.minecraft.command.ICommandSender;
import net.minecraft.entity.player.EntityPlayerMP;
public class CommandTransfer extends CommandBase {
@Override
public String getCommandName() {
// TODO Auto-generated method stub
return "DummyCore.Transfer";
}
@Override
public String getCommandUsage(ICommandSender p_71518_1_) {
// TODO Auto-generated method stub
return "/DummyCore.Transfer <player> <dimensionID>";
}
@Override
public void processCommand(ICommandSender p_71515_1_, String[] p_71515_2_) {
// TODO Auto-generated method stub
int var3 = parseIntWithMin(p_71515_1_, p_71515_2_[1], Integer.MIN_VALUE);
EntityPlayerMP player = p_71515_2_.length == 0 ? getCommandSenderAsPlayer(p_71515_1_) : getPlayer(p_71515_1_, p_71515_2_[0]);
player.travelToDimension(var3);
}
}
Regular → Executable
+38 -38
View File
@@ -1,38 +1,38 @@
package DummyCore.Utils;
/**
*
* @author Modbder
* @version From DummyCore 1.0
* @Description used to work with 2d coord system. Of course, should be a vec2D, but we are working with minecraft =)
*/
public class Coord2D {
public float x;
public float z;
public Coord2D(float i, float j)
{
this.x = i;
this.z = j;
}
public Coord2D()
{
this(0,0);
}
public String toString()
{
return "||x:"+x+"||z:"+z;
}
public static Coord2D fromString(String data)
{
DummyData[] dt = DataStorage.parseData(data);
float cX = Float.parseFloat(dt[0].fieldValue);
float cZ = Float.parseFloat(dt[1].fieldValue);
return new Coord2D(cX,cZ);
}
}
package DummyCore.Utils;
/**
*
* @author Modbder
* @version From DummyCore 1.0
* @Description used to work with 2d coord system. Of course, should be a vec2D, but we are working with minecraft =)
*/
public class Coord2D {
public float x;
public float z;
public Coord2D(float i, float j)
{
this.x = i;
this.z = j;
}
public Coord2D()
{
this(0,0);
}
public String toString()
{
return "||x:"+x+"||z:"+z;
}
public static Coord2D fromString(String data)
{
DummyData[] dt = DataStorage.parseData(data);
float cX = Float.parseFloat(dt[0].fieldValue);
float cZ = Float.parseFloat(dt[1].fieldValue);
return new Coord2D(cX,cZ);
}
}
Regular → Executable
+48 -48
View File
@@ -1,48 +1,48 @@
package DummyCore.Utils;
/**
*
* @author Modbder
* @version From DummyCore 1.1
* @Description used to work with 3d coord system. Of course, should be a vec3D, but we are working with minecraft =)
*/
public class Coord3D {
public float x;
public float y;
public float z;
public Coord3D(double posX, double posY, double posZ)
{
this.x = (float) posX;
this.y = (float) posY;
this.z = (float) posZ;
}
public Coord3D(float i, float k, float j)
{
this.x = i;
this.y = k;
this.z = j;
}
public Coord3D()
{
this(0,0,0);
}
public String toString()
{
return "||x:"+x+"||y:"+y+"||z:"+z;
}
public static Coord3D fromString(String data)
{
DummyData[] dt = DataStorage.parseData(data);
float cX = Float.parseFloat(dt[0].fieldValue);
float cY = Float.parseFloat(dt[1].fieldValue);
float cZ = Float.parseFloat(dt[2].fieldValue);
return new Coord3D(cX,cY,cZ);
}
}
package DummyCore.Utils;
/**
*
* @author Modbder
* @version From DummyCore 1.1
* @Description used to work with 3d coord system. Of course, should be a vec3D, but we are working with minecraft =)
*/
public class Coord3D {
public float x;
public float y;
public float z;
public Coord3D(double posX, double posY, double posZ)
{
this.x = (float) posX;
this.y = (float) posY;
this.z = (float) posZ;
}
public Coord3D(float i, float k, float j)
{
this.x = i;
this.y = k;
this.z = j;
}
public Coord3D()
{
this(0,0,0);
}
public String toString()
{
return "||x:"+x+"||y:"+y+"||z:"+z;
}
public static Coord3D fromString(String data)
{
DummyData[] dt = DataStorage.parseData(data);
float cX = Float.parseFloat(dt[0].fieldValue);
float cY = Float.parseFloat(dt[1].fieldValue);
float cZ = Float.parseFloat(dt[2].fieldValue);
return new Coord3D(cX,cY,cZ);
}
}
+5
View File
@@ -0,0 +1,5 @@
package DummyCore.Utils;
public @interface DCASMCheck {
}
Regular → Executable
+88 -89
View File
@@ -1,89 +1,88 @@
package DummyCore.Utils;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author Modbder
* @version From DummyCore 1.2
* @Description used to store almost any kind of variable in a single String instance.
*/
public class DataStorage {
private static String dataString = "";
/**
* Adds the given DummyData to the data string
* @version From DummyCore 1.2
* @param data - the data to be added to the string
*/
public static void addDataToString(DummyData data)
{
dataString = dataString.concat(data.toString());
}
/**
* Returns the data string, with all data written to it. Also resets the string, so this should be used only once, after you have stored all your data.
* @version From DummyCore 1.2
* @return Correctly formated DataString
*/
public static String getDataString()
{
String ret = dataString;
dataString = "";
return ret;
}
/**
* Used to get your DummyData from the correctly formated string.
* @version From DummyCore 1.2
* @param s - the string to extract data from
* @return - An array of all data from the given string
*/
public static DummyData[] parseData(String s)
{
String field = "";
Object value = null;
List<DummyData> data = new ArrayList();
for(int i = 0; i < s.length(); ++i)
{
if(i+2 < s.length() && s.substring(i, i+2).contains("||"))
{
int size = 0;
ForSize:for(int i1 = i; i1 < s.length();++i1)
{
if(s.charAt(i1) == ':')
break ForSize;
++size;
}
field = s.substring(i+2, i+size);
}
if(i+1 < s.length() && s.substring(i, i+1).contains(":"))
{
int size = 0;
ForSize:for(int i1 = i; i1 < s.length();++i1)
{
if(s.charAt(i1) == '|')
break ForSize;
++size;
}
value = s.substring(i+1, i+size);
}
if(field != "" && value != null)
{
DummyData date = new DummyData(field,value);
data.add(date);
field = "";
value = null;
}
}
DummyData[] ret = new DummyData[data.size()];
for(int i = 0; i < ret.length; ++i)
{
ret[i] = data.get(i);
}
return ret;
}
}
package DummyCore.Utils;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author Modbder
* @version From DummyCore 1.2
* @Description used to store almost any kind of variable in a single String instance.
*/
public class DataStorage {
private static String dataString = "";
/**
* Adds the given DummyData to the data string
* @version From DummyCore 1.2
* @param data - the data to be added to the string
*/
public static void addDataToString(DummyData data)
{
dataString = dataString.concat(data.toString());
}
/**
* Returns the data string, with all data written to it. Also resets the string, so this should be used only once, after you have stored all your data.
* @version From DummyCore 1.2
* @return Correctly formated DataString
*/
public static String getDataString()
{
String ret = dataString;
dataString = "";
return ret;
}
/**
* Used to get your DummyData from the correctly formated string.
* @version From DummyCore 1.2
* @param s - the string to extract data from
* @return - An array of all data from the given string
*/
public static DummyData[] parseData(String s)
{
String field = "";
Object value = null;
List<DummyData> data = new ArrayList<DummyData>();
for(int i = 0; i < s.length(); ++i)
{
if(i+2 < s.length() && s.substring(i, i+2).contains("||"))
{
int size = 0;
ForSize:for(int i1 = i; i1 < s.length();++i1)
{
if(s.charAt(i1) == ':')
break ForSize;
++size;
}
field = s.substring(i+2, i+size);
}
if(i+1 < s.length() && s.substring(i, i+1).contains(":"))
{
int size = 0;
ForSize:for(int i1 = i; i1 < s.length();++i1)
{
if(s.charAt(i1) == '|')
break ForSize;
++size;
}
value = s.substring(i+1, i+size);
}
if(field != "" && value != null)
{
DummyData date = new DummyData(field,value);
data.add(date);
field = "";
value = null;
}
}
DummyData[] ret = new DummyData[data.size()];
for(int i = 0; i < ret.length; ++i)
{
ret[i] = data.get(i);
}
return ret;
}
}
Regular → Executable
+24 -24
View File
@@ -1,24 +1,24 @@
package DummyCore.Utils;
/**
*
* @author Modbder
* @version From DummyCore 1.2
* @Description Used to check, if the float is inbetween 2 others.
*/
public class DummyBounds {
private final float min;
private final float max;
public DummyBounds(float m1, float m2)
{
min = m1;
max = m2;
}
public boolean isInRange(float f)
{
return f > min && f < max;
}
}
package DummyCore.Utils;
/**
*
* @author Modbder
* @version From DummyCore 1.2
* @Description Used to check, if the float is inbetween 2 others.
*/
public class DummyBounds {
private final float min;
private final float max;
public DummyBounds(float m1, float m2)
{
min = m1;
max = m2;
}
public boolean isInRange(float f)
{
return f > min && f < max;
}
}
Regular → Executable
+47 -47
View File
@@ -1,47 +1,47 @@
package DummyCore.Utils;
/**
*
* @author Modbder
* @version From DummyCore 1.1
* @Description Used to work with colors. Requires RGB colors, lesser than 256 to work. Can also convert them to the corresponding Hex value.
*/
public class DummyColor {
private int[] color = new int[3];
public DummyColor(int red, int green, int blue)
{
color[0] = red;
color[1] = green;
color[2] = blue;
}
public int getRed()
{
return color[0];
}
public int getGreen()
{
return color[1];
}
public int getBlue()
{
return color[2];
}
public int getColorInHex()
{
int ret = 0x000000;
int rHex = MathUtils.convertToHex(getRed());
int gHex = MathUtils.convertToHex(getGreen());
int bHex = MathUtils.convertToHex(getBlue());
rHex *= 10000;
gHex *= 100;
ret = rHex+gHex+bHex;
return ret;
}
}
package DummyCore.Utils;
/**
*
* @author Modbder
* @version From DummyCore 1.1
* @Description Used to work with colors. Requires RGB colors, lesser than 256 to work. Can also convert them to the corresponding Hex value.
*/
public class DummyColor {
private int[] color = new int[3];
public DummyColor(int red, int green, int blue)
{
color[0] = red;
color[1] = green;
color[2] = blue;
}
public int getRed()
{
return color[0];
}
public int getGreen()
{
return color[1];
}
public int getBlue()
{
return color[2];
}
public int getColorInHex()
{
int ret = 0x000000;
int rHex = MathUtils.convertToHex(getRed());
int gHex = MathUtils.convertToHex(getGreen());
int bHex = MathUtils.convertToHex(getBlue());
rHex *= 10000;
gHex *= 100;
ret = rHex+gHex+bHex;
return ret;
}
}
Regular → Executable
+37 -37
View File
@@ -1,37 +1,37 @@
package DummyCore.Utils;
import net.minecraftforge.common.config.Configuration;
public class DummyConfig implements IDummyConfig{
public int MultiItemUID;
public int MultiBlockUID;
public static int dummyCoreSyncTimer;
private static int mainMenuID;
public boolean removeMissingTexturesErrors;
public static boolean enableNotifierLogging;
public static boolean shouldChangeImage;
public static Configuration cfg;
public void load(Configuration config)
{
cfg = config;
removeMissingTexturesErrors = config.getBoolean("removeMissingTexturesErrors", "GLOBAL", true, "");
enableNotifierLogging = config.getBoolean("enableNotifierLogging", "GLOBAL", true, "");
shouldChangeImage = config.getBoolean("shouldChangeImageInCreativeTabs", "GLOBAL", true, "");
mainMenuID = config.getInt("mainMenuID", "GLOBAL", 0,0,Integer.MAX_VALUE, "");
dummyCoreSyncTimer = config.getInt("syncTimer", "GLOBAL", 100, 10, 1000, "Time inbetween syncing of data. The more the number is, the worse the sync is going to be, hwever, the less packets will be sent, and, therefore, the less annoying the server lag will be.");
}
public static void setMainMenu(int i)
{
cfg.load();
cfg.get("GLOBAL", "mainMenuID", 0, "").set(i);
mainMenuID = i;
cfg.save();
}
public static int getMainMenu()
{
return mainMenuID;
}
}
package DummyCore.Utils;
import net.minecraftforge.common.config.Configuration;
public class DummyConfig implements IDummyConfig{
public int MultiItemUID;
public int MultiBlockUID;
public static int dummyCoreSyncTimer;
private static int mainMenuID;
public boolean removeMissingTexturesErrors;
public static boolean enableNotifierLogging;
public static boolean shouldChangeImage;
public static Configuration cfg;
public void load(Configuration config)
{
cfg = config;
removeMissingTexturesErrors = config.getBoolean("removeMissingTexturesErrors", "GLOBAL", true, "");
enableNotifierLogging = config.getBoolean("enableNotifierLogging", "GLOBAL", true, "");
shouldChangeImage = config.getBoolean("shouldChangeImageInCreativeTabs", "GLOBAL", true, "");
mainMenuID = config.getInt("mainMenuID", "GLOBAL", 0,0,Integer.MAX_VALUE, "");
dummyCoreSyncTimer = config.getInt("syncTimer", "GLOBAL", 100, 10, 1000, "Time inbetween syncing of data. The more the number is, the worse the sync is going to be, hwever, the less packets will be sent, and, therefore, the less annoying the server lag will be.");
}
public static void setMainMenu(int i)
{
cfg.load();
cfg.get("GLOBAL", "mainMenuID", 0, "").set(i);
mainMenuID = i;
cfg.save();
}
public static int getMainMenu()
{
return mainMenuID;
}
}
Regular → Executable
+30 -30
View File
@@ -1,30 +1,30 @@
package DummyCore.Utils;
/**
*
* @author Modbder
* @version From DummyCore 1.2
* @Description used to store almost any kind of variable using a special Data. When working, remember, that you can store any Object to the corresponding name.
*/
public class DummyData {
public final String fieldName;
public final String fieldValue;
public DummyData(String field, String value)
{
fieldName = field;
fieldValue = value;
}
public DummyData(String field, Object value)
{
fieldName = field;
fieldValue = value.toString();
}
public String toString()
{
String ret = "";
ret = ret.concat("||").concat(fieldName).concat(":").concat(fieldValue.toString());
return ret;
}
}
package DummyCore.Utils;
/**
*
* @author Modbder
* @version From DummyCore 1.2
* @Description used to store almost any kind of variable using a special Data. When working, remember, that you can store any Object to the corresponding name.
*/
public class DummyData {
public final String fieldName;
public final String fieldValue;
public DummyData(String field, String value)
{
fieldName = field;
fieldValue = value;
}
public DummyData(String field, Object value)
{
fieldName = field;
fieldValue = value.toString();
}
public String toString()
{
String ret = "";
ret = ret.concat("||").concat(fieldName).concat(":").concat(fieldValue.toString());
return ret;
}
}
+416 -430
View File
@@ -1,430 +1,416 @@
package DummyCore.Utils;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;
import javax.naming.spi.DirectoryManager;
import net.minecraft.world.World;
import net.minecraft.world.WorldProviderSurface;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.event.world.WorldEvent;
import org.apache.commons.io.DirectoryWalker;
import org.apache.commons.io.filefilter.DirectoryFileFilter;
import DummyCore.Core.CoreInitialiser;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.discovery.DirectoryDiscoverer;
import cpw.mods.fml.common.event.FMLLoadEvent;
import cpw.mods.fml.common.event.FMLServerAboutToStartEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.relauncher.Side;
/**
*
* @author Modbder
* @version From DummyCore 1.4
* @Description used to store any String for players/worlds in the world save folder and get it.
*/
public class DummyDataUtils {
private static File mainWorldFile;
private static Configuration globalConfig;
private static Hashtable<String,File> playerFiles = new Hashtable<String,File>();
private static Hashtable<String,Configuration> playerConfigs = new Hashtable<String,Configuration>();
private static String getPath;
private static boolean isWorking;
private static File directory;
/**
* A new version of world loads, better server compathabilities.
*/
@SubscribeEvent
public void serverWorldLoad(WorldEvent.Load event)
{
try
{
World w = event.world;
if(w != null && !w.isRemote && w.provider != null && w.provider.dimensionId == 0)
{
File f = event.world.getSaveHandler().getWorldDirectory();
if(f != null)
{
String fPath = f.getAbsolutePath();
String dDataPath = fPath+"//DummyData//";
directory = new File(dDataPath);
directory.mkdirs();
File globalDataDat = new File(directory+"//GlobalData.ddat");
File f1 = new File(directory+"//PlayerData//");
f1.mkdirs();
getPath = dDataPath;
mainWorldFile = globalDataDat;
globalConfig = new Configuration(globalDataDat);
isWorking = true;
}
}
}catch(Exception e)
{
Notifier.notifyCustomMod("DummyCore", "Error loading DummyData!");e.printStackTrace();return;
}
}
@Deprecated
public static void load(FMLServerAboutToStartEvent event)
{
String name = event.getServer().getFile(event.getServer().getFolderName()).getAbsolutePath();
int length = 0;
boolean shouldAddSaves = true;
for(int i = 0; i < name.length(); ++i)
{
if(name.substring(0, i).contains("\\.\\"))
{
shouldAddSaves = true;
--length;
--length;
break;
}
++length;
}
String print = name.substring(0,length);
if(shouldAddSaves)
{
print += "saves\\";
print += event.getServer().getFolderName();
}
print += "\\DummyData\\";
File f = new File(print);
f.mkdirs();
File file = new File(print+"GlobalData.ddat");
try {
if(!file.exists())
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
File f1 = new File(print+"/PlayerData/");
f1.mkdirs();
getPath = print;
mainWorldFile = file;
globalConfig = new Configuration(file);
isWorking = true;
}
public static void stop()
{
mainWorldFile = null;
globalConfig = null;
playerFiles.clear();
playerConfigs.clear();
getPath = "no path";
isWorking = false;
directory = null;
MiscUtils.registeredClientData.clear();
MiscUtils.registeredClientWorldData.clear();
MiscUtils.registeredServerData.clear();
MiscUtils.registeredServerWorldData.clear();
}
private static File getDataFileForPlayer(String playerName)
{
if(!playerFiles.containsKey(playerName))
{
File ret = new File(getPath+"/PlayerData/"+playerName+".ddat");
if(!ret.exists())
try {
ret.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
playerFiles.put(playerName, ret);
return ret;
}else
{
return playerFiles.get(playerName);
}
}
private static Configuration getDataConfigForPlayer(String playerName)
{
if(!canWorkWithData())return null;
if(!playerConfigs.containsKey(playerName))
{
playerConfigs.put(playerName, new Configuration(getDataFileForPlayer(playerName)));
}
return playerConfigs.get(playerName);
}
/**
* Writes the given String to the GlobalData.ddat file with the key of dataName
* @version From DummyCore 1.4
* @param modid - the id of your mod
* @param dataName - key of the data
* @param dataString - data to store
*/
public static void writeCustomDataForMod(String modid, String dataName, String dataString)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
MiscUtils.registeredClientWorldData.put(modid+"|"+dataName, dataString);
}else
{
if(!canWorkWithData())return;
globalConfig.load();
globalConfig.get(modid, dataName, dataString).set(dataString);
MiscUtils.registeredServerWorldData.put(modid+"|"+dataName, dataString);
globalConfig.save();
syncGlobalDataToClient(modid, dataName);
}
}
public static void loadCustomDataForMod(String modid, String dataName)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
return;
}else
{
if(!canWorkWithData())return;
globalConfig.load();
MiscUtils.registeredServerWorldData.put(modid+"|"+dataName, globalConfig.get(modid, dataName, "no data").getString());
globalConfig.save();
syncGlobalDataToClient(modid, dataName);
}
}
public static void loadGlobalDataForMod(String modid)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
return;
}else
{
if(!canWorkWithData())return;
globalConfig.load();
MiscUtils.registeredServerWorldData.put(modid+"|"+modid, globalConfig.get(modid, modid, "no data").getString());
globalConfig.save();
syncGlobalDataToClient(modid, modid);
}
}
/**
* Writes the given String to the GlobalData.ddat file with the key of modid
* @version From DummyCore 1.4
* @param modid - the id of your mod
* @param dataString - data to store
*/
public static void writeGlobalDataForMod(String modid, String dataString)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
MiscUtils.registeredClientWorldData.put(modid+"|"+modid, dataString);
}else
{
if(!canWorkWithData())return;
globalConfig.load();
globalConfig.get(modid, modid, dataString).set(dataString);
MiscUtils.registeredServerWorldData.put(modid+"|"+modid, dataString);
globalConfig.save();
syncGlobalDataToClient(modid);
}
}
/**
* Returns the String from the GlobalData.ddat file with the key of modid
* @version From DummyCore 1.4
* @param modid - the id of your mod
* @return a string with the data, written to the ddat file. Returns "no data" if none was found
*/
public static String getGlobalDataForMod(String modid)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
return MiscUtils.registeredClientWorldData.get(modid+"|"+modid);
}else
{
if(!MiscUtils.registeredServerWorldData.containsKey(modid+"|"+modid))
loadGlobalDataForMod(modid);
return MiscUtils.registeredServerWorldData.get(modid+"|"+modid);
}
//@Deprecated
//if(!canWorkWithData())return null;
//globalConfig.load();
//String ret = globalConfig.get(modid, modid, "no data").getString();
//globalConfig.save();
//return ret;
}
/**
* Returns the String from the GlobalData.ddat file with the custom key
* @version From DummyCore 1.4
* @param modid - the id of your mod
* @param dataName - key of the data
* @return a string with the data, written to the ddat file. Returns "no data" if none was found
*/
public static String getCustomDataForMod(String modid, String dataName)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
return MiscUtils.registeredClientWorldData.get(modid+"|"+dataName);
}else
{
if(!MiscUtils.registeredServerWorldData.containsKey(modid+"|"+dataName))
loadCustomDataForMod(modid,dataName);
return MiscUtils.registeredServerWorldData.get(modid+"|"+dataName);
}
//@Deprecated
//if(!canWorkWithData())return null;
//globalConfig.load();
//String ret = globalConfig.get(modid, dataName, "no data").getString();
//globalConfig.save();
//return ret;
}
/**
* Sets the given data to the ddat file of the player with given name.
* @version From DummyCore 1.4
* @param playerName - name of the player
* @param modid - id of the mod
* @param dataName - key of the data
* @param dataValue - the data to store
*/
public static void setDataForPlayer(String playerName, String modid, String dataName, String dataValue)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
MiscUtils.registeredClientData.put(playerName+"_"+modid+"|"+dataName, dataValue);
}else
{
if(!canWorkWithData())return;
Configuration config = getDataConfigForPlayer(playerName);
config.load();
config.get(modid, dataName, dataValue).set(dataValue);
MiscUtils.registeredServerData.put(playerName+"_"+modid+"|"+dataName, dataValue);
config.save();
syncPlayerDataToClient(playerName, modid, dataName);
}
}
public static void loadPlayerDataForMod(String playerName, String modid, String dataName)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
return;
}else
{
if(!canWorkWithData())return;
Configuration config = getDataConfigForPlayer(playerName);
config.load();
MiscUtils.registeredServerData.put(playerName+"_"+modid+"|"+dataName, config.get(modid, dataName, "no data").getString());
config.save();
syncPlayerDataToClient(playerName, modid, dataName);
}
}
/**
* Returns the String from the ddat file of the given player with the custom key
* @version From DummyCore 1.4
* @param playerName - name of the player
* @param modid - id of the mod
* @param dataName - key of the data
* @return a string with the data, written to the ddat file. Returns "no data" if none was found
*/
public static String getDataForPlayer(String playerName, String modid, String dataName)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
return MiscUtils.registeredClientData.get(playerName+"_"+modid+"|"+dataName);
}else
{
if(!MiscUtils.registeredServerData.containsKey(playerName+"_"+modid+"|"+dataName))
loadPlayerDataForMod(playerName, modid, dataName);
return MiscUtils.registeredServerData.get(playerName+"_"+modid+"|"+dataName);
}
//@Deprecated
//if(!canWorkWithData())return null;
//Configuration config = getDataConfigForPlayer(playerName);
//config.load();
//String ret = config.get(modid, dataName, "no data").getString();
//config.save();
//return ret;
}
/**
* Used to check, if current world exists(for example, if the player is in the main menu returns false)
* @version From DummyCore 1.4
* @return True, if there is a running world, false if not.
*/
public static boolean canWorkWithData()
{
return isWorking;
}
public static void syncGlobalDataToClient(String modid, String dataName)
{
SyncUtils.addRequiresSync(modid, dataName);
/*
if(MiscUtils.registeredServerWorldData.containsKey(modid+"|"+dataName))
{
String dataString = "||mod:DummyCore.InfoSync"+"||"+modid+":"+dataName+"||ddata:"+MiscUtils.registeredServerWorldData.get(modid+"|"+dataName);
DummyPacketIMSG simplePacket = new DummyPacketIMSG(dataString);
CoreInitialiser.packetHandler.sendToAll(simplePacket);
}else
{
Notifier.notifyCustomMod(modid, "The sync packet for data "+modid+"|"+dataName+" could not be generated - the requested server data does not exist!");
}
*/
}
public static void syncGlobalDataToClient(String modid)
{
SyncUtils.addRequiresSync(modid, modid);
/*
if(MiscUtils.registeredServerWorldData.containsKey(modid+"|"+modid))
{
String dataString = "||mod:DummyCore.InfoSync"+"||"+modid+":"+modid+"||ddata:"+MiscUtils.registeredServerWorldData.get(modid+"|"+modid);
DummyPacketIMSG simplePacket = new DummyPacketIMSG(dataString);
CoreInitialiser.packetHandler.sendToAll(simplePacket);
}else
{
Notifier.notifyCustomMod(modid, "The sync packet for data "+modid+ "could not be generated - the requested server data does not exist!");
}
*/
}
public static void syncPlayerDataToClient(String playerName, String modid, String dataName)
{
SyncUtils.addRequiresSync(playerName, modid, dataName);
/*
if(MiscUtils.registeredServerData.containsKey(playerName+"_"+modid+"|"+dataName))
{
String dataString = "||mod:DummyCore.PlayerInfoSync"+"||"+"playerName:"+playerName+"||"+modid+ ":" + dataName+"||ddata:"+MiscUtils.registeredServerData.get(playerName+"_"+modid+"|"+dataName);
DummyPacketIMSG simplePacket = new DummyPacketIMSG(dataString);
CoreInitialiser.packetHandler.sendToAll(simplePacket);
}else
{
Notifier.notifyCustomMod(modid, "The sync packet for data "+playerName+"_"+modid+ "could not be generated - the requested server data does not exist!");
}
*/
}
}
package DummyCore.Utils;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;
import net.minecraft.world.World;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.event.world.WorldEvent;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.event.FMLServerAboutToStartEvent;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.relauncher.Side;
/**
*
* @author Modbder
* @version From DummyCore 1.4
* @Description used to store any String for players/worlds in the world save folder and get it.
*/
public class DummyDataUtils {
private static Configuration globalConfig;
private static Hashtable<String,File> playerFiles = new Hashtable<String,File>();
private static Hashtable<String,Configuration> playerConfigs = new Hashtable<String,Configuration>();
private static String getPath;
private static boolean isWorking;
private static File directory;
/**
* A new version of world loads, better server compathabilities.
*/
@SubscribeEvent
public void serverWorldLoad(WorldEvent.Load event)
{
try
{
World w = event.world;
if(w != null && !w.isRemote && w.provider != null && w.provider.dimensionId == 0)
{
File f = event.world.getSaveHandler().getWorldDirectory();
if(f != null)
{
String fPath = f.getAbsolutePath();
String dDataPath = fPath+"//DummyData//";
directory = new File(dDataPath);
directory.mkdirs();
File globalDataDat = new File(directory+"//GlobalData.ddat");
File f1 = new File(directory+"//PlayerData//");
f1.mkdirs();
getPath = dDataPath;
globalConfig = new Configuration(globalDataDat);
isWorking = true;
}
}
}catch(Exception e)
{
Notifier.notifyCustomMod("DummyCore", "Error loading DummyData!");e.printStackTrace();return;
}
}
@Deprecated
public static void load(FMLServerAboutToStartEvent event)
{
String name = event.getServer().getFile(event.getServer().getFolderName()).getAbsolutePath();
int length = 0;
boolean shouldAddSaves = true;
for(int i = 0; i < name.length(); ++i)
{
if(name.substring(0, i).contains("\\.\\"))
{
shouldAddSaves = true;
--length;
--length;
break;
}
++length;
}
String print = name.substring(0,length);
if(shouldAddSaves)
{
print += "saves\\";
print += event.getServer().getFolderName();
}
print += "\\DummyData\\";
File f = new File(print);
f.mkdirs();
File file = new File(print+"GlobalData.ddat");
try {
if(!file.exists())
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
File f1 = new File(print+"/PlayerData/");
f1.mkdirs();
getPath = print;
globalConfig = new Configuration(file);
isWorking = true;
}
public static void stop()
{
globalConfig = null;
playerFiles.clear();
playerConfigs.clear();
getPath = "no path";
isWorking = false;
directory = null;
MiscUtils.registeredClientData.clear();
MiscUtils.registeredClientWorldData.clear();
MiscUtils.registeredServerData.clear();
MiscUtils.registeredServerWorldData.clear();
}
private static File getDataFileForPlayer(String playerName)
{
if(!playerFiles.containsKey(playerName))
{
File ret = new File(getPath+"/PlayerData/"+playerName+".ddat");
if(!ret.exists())
try {
ret.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
playerFiles.put(playerName, ret);
return ret;
}else
{
return playerFiles.get(playerName);
}
}
private static Configuration getDataConfigForPlayer(String playerName)
{
if(!canWorkWithData())return null;
if(!playerConfigs.containsKey(playerName))
{
playerConfigs.put(playerName, new Configuration(getDataFileForPlayer(playerName)));
}
return playerConfigs.get(playerName);
}
/**
* Writes the given String to the GlobalData.ddat file with the key of dataName
* @version From DummyCore 1.4
* @param modid - the id of your mod
* @param dataName - key of the data
* @param dataString - data to store
*/
public static void writeCustomDataForMod(String modid, String dataName, String dataString)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
MiscUtils.registeredClientWorldData.put(modid+"|"+dataName, dataString);
}else
{
if(!canWorkWithData())return;
globalConfig.load();
globalConfig.get(modid, dataName, dataString).set(dataString);
MiscUtils.registeredServerWorldData.put(modid+"|"+dataName, dataString);
globalConfig.save();
syncGlobalDataToClient(modid, dataName);
}
}
public static void loadCustomDataForMod(String modid, String dataName)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
return;
}else
{
if(!canWorkWithData())return;
globalConfig.load();
MiscUtils.registeredServerWorldData.put(modid+"|"+dataName, globalConfig.get(modid, dataName, "no data").getString());
globalConfig.save();
syncGlobalDataToClient(modid, dataName);
}
}
public static void loadGlobalDataForMod(String modid)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
return;
}else
{
if(!canWorkWithData())return;
globalConfig.load();
MiscUtils.registeredServerWorldData.put(modid+"|"+modid, globalConfig.get(modid, modid, "no data").getString());
globalConfig.save();
syncGlobalDataToClient(modid, modid);
}
}
/**
* Writes the given String to the GlobalData.ddat file with the key of modid
* @version From DummyCore 1.4
* @param modid - the id of your mod
* @param dataString - data to store
*/
public static void writeGlobalDataForMod(String modid, String dataString)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
MiscUtils.registeredClientWorldData.put(modid+"|"+modid, dataString);
}else
{
if(!canWorkWithData())return;
globalConfig.load();
globalConfig.get(modid, modid, dataString).set(dataString);
MiscUtils.registeredServerWorldData.put(modid+"|"+modid, dataString);
globalConfig.save();
syncGlobalDataToClient(modid);
}
}
/**
* Returns the String from the GlobalData.ddat file with the key of modid
* @version From DummyCore 1.4
* @param modid - the id of your mod
* @return a string with the data, written to the ddat file. Returns "no data" if none was found
*/
public static String getGlobalDataForMod(String modid)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
return MiscUtils.registeredClientWorldData.get(modid+"|"+modid);
}else
{
if(!MiscUtils.registeredServerWorldData.containsKey(modid+"|"+modid))
loadGlobalDataForMod(modid);
return MiscUtils.registeredServerWorldData.get(modid+"|"+modid);
}
//@Deprecated
//if(!canWorkWithData())return null;
//globalConfig.load();
//String ret = globalConfig.get(modid, modid, "no data").getString();
//globalConfig.save();
//return ret;
}
/**
* Returns the String from the GlobalData.ddat file with the custom key
* @version From DummyCore 1.4
* @param modid - the id of your mod
* @param dataName - key of the data
* @return a string with the data, written to the ddat file. Returns "no data" if none was found
*/
public static String getCustomDataForMod(String modid, String dataName)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
return MiscUtils.registeredClientWorldData.get(modid+"|"+dataName);
}else
{
if(!MiscUtils.registeredServerWorldData.containsKey(modid+"|"+dataName))
loadCustomDataForMod(modid,dataName);
return MiscUtils.registeredServerWorldData.get(modid+"|"+dataName);
}
//@Deprecated
//if(!canWorkWithData())return null;
//globalConfig.load();
//String ret = globalConfig.get(modid, dataName, "no data").getString();
//globalConfig.save();
//return ret;
}
/**
* Sets the given data to the ddat file of the player with given name.
* @version From DummyCore 1.4
* @param playerName - name of the player
* @param modid - id of the mod
* @param dataName - key of the data
* @param dataValue - the data to store
*/
public static void setDataForPlayer(String playerName, String modid, String dataName, String dataValue)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
MiscUtils.registeredClientData.put(playerName+"_"+modid+"|"+dataName, dataValue);
}else
{
if(!canWorkWithData())return;
Configuration config = getDataConfigForPlayer(playerName);
config.load();
config.get(modid, dataName, dataValue).set(dataValue);
MiscUtils.registeredServerData.put(playerName+"_"+modid+"|"+dataName, dataValue);
config.save();
syncPlayerDataToClient(playerName, modid, dataName);
}
}
public static void loadPlayerDataForMod(String playerName, String modid, String dataName)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
return;
}else
{
if(!canWorkWithData())return;
Configuration config = getDataConfigForPlayer(playerName);
config.load();
MiscUtils.registeredServerData.put(playerName+"_"+modid+"|"+dataName, config.get(modid, dataName, "no data").getString());
config.save();
syncPlayerDataToClient(playerName, modid, dataName);
}
}
/**
* Returns the String from the ddat file of the given player with the custom key
* @version From DummyCore 1.4
* @param playerName - name of the player
* @param modid - id of the mod
* @param dataName - key of the data
* @return a string with the data, written to the ddat file. Returns "no data" if none was found
*/
public static String getDataForPlayer(String playerName, String modid, String dataName)
{
Side s = FMLCommonHandler.instance().getEffectiveSide();
if(s == Side.CLIENT)
{
return MiscUtils.registeredClientData.get(playerName+"_"+modid+"|"+dataName);
}else
{
if(!MiscUtils.registeredServerData.containsKey(playerName+"_"+modid+"|"+dataName))
loadPlayerDataForMod(playerName, modid, dataName);
return MiscUtils.registeredServerData.get(playerName+"_"+modid+"|"+dataName);
}
//@Deprecated
//if(!canWorkWithData())return null;
//Configuration config = getDataConfigForPlayer(playerName);
//config.load();
//String ret = config.get(modid, dataName, "no data").getString();
//config.save();
//return ret;
}
/**
* Used to check, if current world exists(for example, if the player is in the main menu returns false)
* @version From DummyCore 1.4
* @return True, if there is a running world, false if not.
*/
public static boolean canWorkWithData()
{
return isWorking;
}
public static void syncGlobalDataToClient(String modid, String dataName)
{
SyncUtils.addRequiresSync(modid, dataName);
/*
if(MiscUtils.registeredServerWorldData.containsKey(modid+"|"+dataName))
{
String dataString = "||mod:DummyCore.InfoSync"+"||"+modid+":"+dataName+"||ddata:"+MiscUtils.registeredServerWorldData.get(modid+"|"+dataName);
DummyPacketIMSG simplePacket = new DummyPacketIMSG(dataString);
CoreInitialiser.packetHandler.sendToAll(simplePacket);
}else
{
Notifier.notifyCustomMod(modid, "The sync packet for data "+modid+"|"+dataName+" could not be generated - the requested server data does not exist!");
}
*/
}
public static void syncGlobalDataToClient(String modid)
{
SyncUtils.addRequiresSync(modid, modid);
/*
if(MiscUtils.registeredServerWorldData.containsKey(modid+"|"+modid))
{
String dataString = "||mod:DummyCore.InfoSync"+"||"+modid+":"+modid+"||ddata:"+MiscUtils.registeredServerWorldData.get(modid+"|"+modid);
DummyPacketIMSG simplePacket = new DummyPacketIMSG(dataString);
CoreInitialiser.packetHandler.sendToAll(simplePacket);
}else
{
Notifier.notifyCustomMod(modid, "The sync packet for data "+modid+ "could not be generated - the requested server data does not exist!");
}
*/
}
public static void syncPlayerDataToClient(String playerName, String modid, String dataName)
{
SyncUtils.addRequiresSync(playerName, modid, dataName);
/*
if(MiscUtils.registeredServerData.containsKey(playerName+"_"+modid+"|"+dataName))
{
String dataString = "||mod:DummyCore.PlayerInfoSync"+"||"+"playerName:"+playerName+"||"+modid+ ":" + dataName+"||ddata:"+MiscUtils.registeredServerData.get(playerName+"_"+modid+"|"+dataName);
DummyPacketIMSG simplePacket = new DummyPacketIMSG(dataString);
CoreInitialiser.packetHandler.sendToAll(simplePacket);
}else
{
Notifier.notifyCustomMod(modid, "The sync packet for data "+playerName+"_"+modid+ "could not be generated - the requested server data does not exist!");
}
*/
}
}
+41 -41
View File
@@ -1,41 +1,41 @@
package DummyCore.Utils;
/**
*
* @author Modbder
* @version From DummyCore 1.2
* @Description Used to store the distance betwenn 2 points.
*/
public class DummyDistance {
private final float distance;
public DummyDistance()
{
distance = 0;
}
public DummyDistance(Coord3D first, Coord3D second)
{
float diffX = MathUtils.getDifference(first.x, second.x);
float diffY = MathUtils.getDifference(first.y, second.y);
float diffZ = MathUtils.getDifference(first.z, second.z);
distance = (float) Math.sqrt(diffX*diffX+diffY*diffY+diffZ*diffZ);
}
public DummyDistance(Coord2D first, Coord2D second)
{
float diffX = MathUtils.getDifference(first.x, second.x);
float diffZ = MathUtils.getDifference(first.z, second.z);
distance = (float) Math.sqrt(diffX*diffX+diffZ*diffZ);
}
public DummyDistance(float first, float second)
{
distance = MathUtils.getDifference(first, second);
}
public float getDistance()
{
return this.distance;
}
}
package DummyCore.Utils;
/**
*
* @author Modbder
* @version From DummyCore 1.2
* @Description Used to store the distance betwenn 2 points.
*/
public class DummyDistance {
private final float distance;
public DummyDistance()
{
distance = 0;
}
public DummyDistance(Coord3D first, Coord3D second)
{
float diffX = MathUtils.getDifference(first.x, second.x);
float diffY = MathUtils.getDifference(first.y, second.y);
float diffZ = MathUtils.getDifference(first.z, second.z);
distance = (float) Math.sqrt(diffX*diffX+diffY*diffY+diffZ*diffZ);
}
public DummyDistance(Coord2D first, Coord2D second)
{
float diffX = MathUtils.getDifference(first.x, second.x);
float diffZ = MathUtils.getDifference(first.z, second.z);
distance = (float) Math.sqrt(diffX*diffX+diffZ*diffZ);
}
public DummyDistance(float first, float second)
{
distance = MathUtils.getDifference(first, second);
}
public float getDistance()
{
return this.distance;
}
}
+463 -464
View File
@@ -1,464 +1,463 @@
package DummyCore.Utils;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import org.lwjgl.input.Keyboard;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiMainMenu;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.ai.attributes.AttributeModifier;
import net.minecraft.entity.ai.attributes.IAttribute;
import net.minecraft.entity.ai.attributes.IAttributeInstance;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.management.ServerConfigurationManager;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.chunk.Chunk;
import net.minecraftforge.client.event.GuiScreenEvent.DrawScreenEvent;
import net.minecraftforge.client.event.GuiScreenEvent.InitGuiEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import net.minecraftforge.event.entity.player.PlayerEvent;
import DummyCore.Client.GuiButton_ChangeGUI;
import DummyCore.Client.GuiMainMenuVanilla;
import DummyCore.Client.MainMenuGUIRenderer;
import DummyCore.Client.MainMenuRegistry;
import DummyCore.Core.CoreInitialiser;
import DummyCore.Events.DummyEvent_OnClientGUIButtonPress;
import DummyCore.Events.DummyEvent_OnKeyboardKeyPressed_Server;
import DummyCore.Events.DummyEvent_OnPacketRecieved;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.TickEvent;
import cpw.mods.fml.common.gameevent.TickEvent.Phase;
import cpw.mods.fml.common.gameevent.TickEvent.PlayerTickEvent;
import cpw.mods.fml.common.gameevent.TickEvent.RenderTickEvent;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import cpw.mods.fml.server.FMLServerHandler;
/**
* @author Modbder
* @version From DummyCore 1.7
* @Description Used for internal DummyCore features. Do NOT change!
*/
public class DummyEventHandler {
public static int syncTime;
public static boolean[] isKeyPressed;
public void onBlockBeeingBroken(PlayerEvent.BreakSpeed event)
{
if(MiscUtils.isBlockUnbreakable(event.entityPlayer.worldObj, event.x, event.y, event.z))
{
event.setCanceled(true);
}
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onMainMenuGUISetup(InitGuiEvent.Pre event)
{
if(event.gui.getClass() == GuiMainMenu.class)
{
event.setCanceled(true);
MainMenuRegistry.newMainMenu(DummyConfig.getMainMenu());
}
if(event.gui instanceof IMainMenu)
{
if(MainMenuRegistry.menuList.get(DummyConfig.getMainMenu()) != event.gui.getClass())
{
event.setCanceled(true);
MainMenuRegistry.newMainMenu(DummyConfig.getMainMenu());
}
}
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onClientTick(RenderTickEvent event)
{
try
{
if(isKeyPressed == null) isKeyPressed = new boolean[Keyboard.getKeyCount()];
if(FMLClientHandler.instance().getClientPlayerEntity() != null)
for(int i = 0; i < isKeyPressed.length; ++i)
{
if(Keyboard.isKeyDown(Keyboard.getKeyIndex(Keyboard.getKeyName(i))) && !isKeyPressed[i])
{
isKeyPressed[i] = true;
int id = i;
String keyName = Keyboard.getKeyName(i);
String username = FMLClientHandler.instance().getClientPlayerEntity().getCommandSenderName();
DummyData aaa = new DummyData("id",id);
DummyData aab = new DummyData("name",keyName);
DummyData aac = new DummyData("username",username);
DummyData aad = new DummyData("pressed",true);
DataStorage.addDataToString(aaa);
DataStorage.addDataToString(aab);
DataStorage.addDataToString(aac);
DataStorage.addDataToString(aad);
String dataString = DataStorage.getDataString();
DummyPacketIMSG packet = new DummyPacketIMSG("||mod:DummyCore.ButtonPress"+dataString);
CoreInitialiser.packetHandler.sendToServer(packet);
}
if(!Keyboard.isKeyDown(Keyboard.getKeyIndex(Keyboard.getKeyName(i))) && isKeyPressed[i])
{
isKeyPressed[i] = false;
int id = i;
String keyName = Keyboard.getKeyName(i);
String username = FMLClientHandler.instance().getClientPlayerEntity().getCommandSenderName();
DummyData aaa = new DummyData("id",id);
DummyData aab = new DummyData("name",keyName);
DummyData aac = new DummyData("username",username);
DummyData aad = new DummyData("pressed",false);
DataStorage.addDataToString(aaa);
DataStorage.addDataToString(aab);
DataStorage.addDataToString(aac);
DataStorage.addDataToString(aad);
String dataString = DataStorage.getDataString();
DummyPacketIMSG packet = new DummyPacketIMSG("||mod:DummyCore.ButtonPress"+dataString);
CoreInitialiser.packetHandler.sendToServer(packet);
}
}
}catch(Exception e)
{
DataStorage.getDataString();
return;
}
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onMainMenuGUISetup(InitGuiEvent.Post event)
{
if(event.gui instanceof IMainMenu)
{
event.buttonList.add(new GuiButton_ChangeGUI(65535, event.gui.width/2 + 104, event.gui.height/4 + 24 + 72, 100, 20, "Change Main Menu"));
}
}
@SubscribeEvent
public void onPacketRecieved(DummyEvent_OnPacketRecieved event)
{
DummyData[] packetData = DataStorage.parseData(event.recievedData);
if(packetData != null && packetData.length > 0)
{
try {
DummyData modData = packetData[0];
if(modData.fieldName.equalsIgnoreCase("mod") && modData.fieldValue.equalsIgnoreCase("dummycore.tilesync"))
{
int x = Integer.parseInt(packetData[1].fieldValue);
int y = Integer.parseInt(packetData[2].fieldValue);
int z = Integer.parseInt(packetData[3].fieldValue);
TileEntity tile = event.recievedEntity.worldObj.getTileEntity(x, y, z);
if(tile != null && tile instanceof ITEHasGameData)
{
DummyData[] tileShouldRecieve = Arrays.copyOfRange(packetData, 4, packetData.length);
((ITEHasGameData)tile).setData(tileShouldRecieve);
}
}
if(modData.fieldName.equalsIgnoreCase("mod") && modData.fieldValue.equalsIgnoreCase("dummycore.particle"))
{
String type = packetData[1].fieldValue;
float x = Float.parseFloat(packetData[2].fieldValue);
float y = Float.parseFloat(packetData[3].fieldValue);
float z = Float.parseFloat(packetData[4].fieldValue);
double r = Double.parseDouble(packetData[5].fieldValue);
double g = Double.parseDouble(packetData[6].fieldValue);
double b = Double.parseDouble(packetData[7].fieldValue);
event.recievedEntity.worldObj.spawnParticle(type, x, y, z, r, g, b);
}
if(modData.fieldName.equalsIgnoreCase("mod") && modData.fieldValue.equalsIgnoreCase("dummycore.infosync"))
{
String modName = packetData[1].fieldName;
String dataName = packetData[1].fieldValue;
String dataItself = event.recievedData.substring(event.recievedData.indexOf("||ddata:")+8);
MiscUtils.registeredClientWorldData.put(modName+"|"+dataName, dataItself);
}
if(modData.fieldName.equalsIgnoreCase("mod") && modData.fieldValue.equalsIgnoreCase("dummycore.playerinfosync"))
{
String playerName = packetData[1].fieldValue;
String modName = packetData[2].fieldName;
String dataName = packetData[2].fieldValue;
String dataItself = event.recievedData.substring(event.recievedData.indexOf("||ddata:")+8);
MiscUtils.registeredClientData.put(playerName+"_"+modName+"|"+dataName, dataItself);
}
if(modData.fieldName.equalsIgnoreCase("mod") && modData.fieldValue.equalsIgnoreCase("dummycore.biomechange"))
{
int x = Integer.parseInt(packetData[1].fieldValue);
int z = Integer.parseInt(packetData[2].fieldValue);
int id = Integer.parseInt(packetData[3].fieldValue);
World world = event.recievedEntity.worldObj;
Chunk chunk = world.getChunkFromBlockCoords(x,z);
byte[] biome = chunk.getBiomeArray();
int cbiome = biome[(z & 0xf) << 4 | x & 0xf];
cbiome = id & 0xff;
biome[(z & 0xf) << 4 | x & 0xf] = (byte) cbiome;
chunk.setBiomeArray(biome);
world.markBlocksDirtyVertical(x, z, 16, 16);
}
if(modData.fieldName.equalsIgnoreCase("mod") && modData.fieldValue.equalsIgnoreCase("dummyCore.buttonpress"))
{
int id = Integer.parseInt(packetData[1].fieldValue);
String name = packetData[2].fieldValue;
String username = packetData[3].fieldValue;
boolean pressed = Boolean.parseBoolean(packetData[4].fieldValue);
Side side = FMLCommonHandler.instance().getEffectiveSide();
if(side == Side.SERVER)
{
MinecraftServer server = MinecraftServer.getServer();
ServerConfigurationManager manager = server.getConfigurationManager();
EntityPlayer player = manager.func_152612_a(username);
MinecraftForge.EVENT_BUS.post(new DummyEvent_OnKeyboardKeyPressed_Server(id, name, player,pressed));
}
}
if(modData.fieldName.equalsIgnoreCase("mod") && modData.fieldValue.equalsIgnoreCase("dummyCore.guiButton"))
{
int id = Integer.parseInt(packetData[1].fieldValue);
String pClName = packetData[2].fieldValue;
String bClName = packetData[3].fieldValue;
String username = packetData[4].fieldValue;
int x = Integer.parseInt(packetData[5].fieldValue);
int y = Integer.parseInt(packetData[6].fieldValue);
int z = Integer.parseInt(packetData[7].fieldValue);
DummyData[] data = new DummyData[packetData.length-8];
for(int i = 8; i < packetData.length; ++i)
data[i-8] = packetData[i];
Side side = FMLCommonHandler.instance().getEffectiveSide();
if(side == Side.SERVER)
{
MinecraftServer server = MinecraftServer.getServer();
ServerConfigurationManager manager = server.getConfigurationManager();
EntityPlayer player = manager.func_152612_a(username);
MinecraftForge.EVENT_BUS.post(new DummyEvent_OnClientGUIButtonPress(id, pClName, bClName, player,x,y,z,data));
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
}
}
@SubscribeEvent
public void onDescrAdded(ItemTooltipEvent event)
{
ItemStack stack = event.itemStack;
String unlocName = stack.getUnlocalizedName();
if(MiscUtils.descriptionTable.containsKey(unlocName))
{
event.toolTip.add(MiscUtils.descriptionCTable.get(unlocName)+MiscUtils.descriptionTable.get(unlocName));
}else
{
List list = Arrays.asList(stack.getItem().itemRegistry.getNameForObject(stack.getItem()),stack.getItemDamage());
if(MiscUtils.descriptionNTable.containsKey(list))
{
event.toolTip.add(MiscUtils.descriptionNCTable.get(list)+MiscUtils.descriptionNTable.get(list));
}
}
}
@SubscribeEvent
public void onPlayerTickEnd(PlayerTickEvent event)
{
EntityPlayer player = event.player;
IInventory inv = player.inventory;
for(int k = 0; k < inv.getSizeInventory(); ++k)
{
ItemStack s = inv.getStackInSlot(k);
if(s != null)
{
if(s.getItem() instanceof IAttributeModifier)
{
String itype = ((IAttributeModifier)s.getItem()).getType(s, player);
if(itype.equals("inventory"))
{
String last5OfUUID = ((IAttributeModifier)s.getItem()).last5OfUUID(s, player);
int operation = ((IAttributeModifier)s.getItem()).getOperation(s, player);
double ivalue = ((IAttributeModifier)s.getItem()).getValue(s, player);
IAttribute iattrib = ((IAttributeModifier)s.getItem()).getAttribute(s, player);
MiscUtils.applyPlayerModifier(player, iattrib, last5OfUUID, ivalue, false, operation, itype);
}else
{
if(itype.equals("hold") && player.getCurrentEquippedItem() == s)
{
String last5OfUUID = ((IAttributeModifier)s.getItem()).last5OfUUID(s, player);
int operation = ((IAttributeModifier)s.getItem()).getOperation(s, player);
double ivalue = ((IAttributeModifier)s.getItem()).getValue(s, player);
IAttribute iattrib = ((IAttributeModifier)s.getItem()).getAttribute(s, player);
MiscUtils.applyPlayerModifier(player, iattrib, last5OfUUID, ivalue, false, operation, itype);
}else
{
if(itype.equals("armor") && (player.inventory.armorInventory[0] == s ||player.inventory.armorInventory[1] == s ||player.inventory.armorInventory[2] == s ||player.inventory.armorInventory[3] == s))
{
String last5OfUUID = ((IAttributeModifier)s.getItem()).last5OfUUID(s, player);
int operation = ((IAttributeModifier)s.getItem()).getOperation(s, player);
double ivalue = ((IAttributeModifier)s.getItem()).getValue(s, player);
IAttribute iattrib = ((IAttributeModifier)s.getItem()).getAttribute(s, player);
MiscUtils.applyPlayerModifier(player, iattrib, last5OfUUID, ivalue, false, operation, itype);
}
}
}
}else
{
List l = Arrays.asList(s.getItem().getUnlocalizedName(),Integer.toString(s.getItemDamage()));
if(MiscUtils.shouldIgnoreDamage.contains(s.getItem()))
l = Arrays.asList(s.getItem().getUnlocalizedName(),Integer.toString(-1));
if(MiscUtils.modifierType.containsKey(l))
{
String itype = MiscUtils.modifierType.get(l);
if(itype.equals("inventory"))
{
String last5OfUUID = MiscUtils.modifierUUID.get(l);
int operation = MiscUtils.modifierOperation.get(l);
double ivalue = MiscUtils.modifierValue.get(l);
IAttribute iattrib = MiscUtils.modifier.get(l);
MiscUtils.applyPlayerModifier(player, iattrib, last5OfUUID, ivalue, false, operation, itype);
}else
{
if(itype.equals("hold") && player.getCurrentEquippedItem() == s)
{
String last5OfUUID = MiscUtils.modifierUUID.get(l);
int operation = MiscUtils.modifierOperation.get(l);
double ivalue = MiscUtils.modifierValue.get(l);
IAttribute iattrib = MiscUtils.modifier.get(l);
MiscUtils.applyPlayerModifier(player, iattrib, last5OfUUID, ivalue, false, operation, itype);
}else
{
if(itype.equals("armor") && (player.inventory.armorInventory[0] == s ||player.inventory.armorInventory[1] == s ||player.inventory.armorInventory[2] == s ||player.inventory.armorInventory[3] == s))
{
String last5OfUUID = MiscUtils.modifierUUID.get(l);
int operation = MiscUtils.modifierOperation.get(l);
double ivalue = MiscUtils.modifierValue.get(l);
IAttribute iattrib = MiscUtils.modifier.get(l);
MiscUtils.applyPlayerModifier(player, iattrib, last5OfUUID, ivalue, false, operation, itype);
}
}
}
}
}
}
}
for(int i1 = 0; i1 < player.getAttributeMap().getAllAttributes().size(); ++i1)
{
IAttributeInstance ainst = (IAttributeInstance) player.getAttributeMap().getAllAttributes().toArray()[i1];
Collection coll = ainst.func_111122_c();
for(int j = 0; j < coll.size(); ++j)
{
if(coll.toArray()[j] instanceof AttributeModifier)
{
AttributeModifier mod = (AttributeModifier) coll.toArray()[j];
String name = mod.getName();
boolean remove = true;
if(name.contains("dam."))
{
String sub = mod.getID().toString().substring(mod.getID().toString().length()-5, mod.getID().toString().length());
if(name.contains("hold"))
{
ItemStack s = player.getCurrentEquippedItem();
if(s != null)
{
if(s.getItem() instanceof IAttributeModifier)
{
String uuid = ((IAttributeModifier)s.getItem()).last5OfUUID(s, player).toLowerCase();
if(uuid.equals(sub))
remove = false;
}
List l = Arrays.asList(s.getItem().getUnlocalizedName(),Integer.toString(s.getItemDamage()));
if(MiscUtils.shouldIgnoreDamage.contains(s.getItem()))
l = Arrays.asList(s.getItem().getUnlocalizedName(),Integer.toString(-1));
if(MiscUtils.modifierUUID.containsKey(l))
{
String uuid = MiscUtils.modifierUUID.get(l).toLowerCase();
if(uuid.equals(sub))
remove = false;
}
}
}
if(name.contains("inventory"))
{
IInventory inven = player.inventory;
for(int k = 0; k < inven.getSizeInventory(); ++k)
{
ItemStack s = inven.getStackInSlot(k);
if(s != null)
{
if(s.getItem() instanceof IAttributeModifier)
{
String uuid = ((IAttributeModifier)s.getItem()).last5OfUUID(s, player).toLowerCase();
if(uuid.equals(sub))
remove = false;
}
List l = Arrays.asList(s.getItem().getUnlocalizedName(),Integer.toString(s.getItemDamage()));
if(MiscUtils.shouldIgnoreDamage.contains(s.getItem()))
l = Arrays.asList(s.getItem().getUnlocalizedName(),Integer.toString(-1));
if(MiscUtils.modifierUUID.containsKey(l))
{
String uuid = MiscUtils.modifierUUID.get(l).toLowerCase();
if(uuid.equals(sub))
remove = false;
}
}
}
}
if(name.contains("armor"))
{
for(int k = 0; k < player.inventory.armorInventory.length; ++k)
{
ItemStack s = player.inventory.armorInventory[k];
if(s != null)
{
if(s.getItem() instanceof IAttributeModifier)
{
String uuid = ((IAttributeModifier)s.getItem()).last5OfUUID(s, player).toLowerCase();
if(uuid.equals(sub))
remove = false;
}
List l = Arrays.asList(s.getItem().getUnlocalizedName(),Integer.toString(s.getItemDamage()));
if(MiscUtils.shouldIgnoreDamage.contains(s.getItem()))
l = Arrays.asList(s.getItem().getUnlocalizedName(),Integer.toString(-1));
if(MiscUtils.modifierUUID.containsKey(l))
{
String uuid = MiscUtils.modifierUUID.get(l).toLowerCase();
if(uuid.equals(sub))
remove = false;
}
}
}
}
if(remove)
MiscUtils.applyPlayerModifier(player, ainst.getAttribute(), sub, 1, true, 0, "remove");
}
}
}
}
}
@SubscribeEvent
public void onServerTick(TickEvent.ServerTickEvent event)
{
if(event.phase == Phase.END)
{
++syncTime;
if(syncTime >= DummyConfig.dummyCoreSyncTimer)
{
syncTime = 0;
SyncUtils.makeSync_LotsSmallPackets();
}
}
}
}
package DummyCore.Utils;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import org.lwjgl.input.Keyboard;
import net.minecraft.client.gui.GuiMainMenu;
import net.minecraft.entity.ai.attributes.AttributeModifier;
import net.minecraft.entity.ai.attributes.IAttribute;
import net.minecraft.entity.ai.attributes.IAttributeInstance;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.management.ServerConfigurationManager;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraft.world.chunk.Chunk;
import net.minecraftforge.client.event.GuiScreenEvent.InitGuiEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import net.minecraftforge.event.entity.player.PlayerEvent;
import DummyCore.Client.GuiButton_ChangeGUI;
import DummyCore.Client.MainMenuRegistry;
import DummyCore.Events.DummyEvent_OnClientGUIButtonPress;
import DummyCore.Events.DummyEvent_OnKeyboardKeyPressed_Server;
import DummyCore.Events.DummyEvent_OnPacketRecieved;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.TickEvent;
import cpw.mods.fml.common.gameevent.TickEvent.Phase;
import cpw.mods.fml.common.gameevent.TickEvent.PlayerTickEvent;
import cpw.mods.fml.common.gameevent.TickEvent.RenderTickEvent;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
/**
* @author Modbder
* @version From DummyCore 1.7
* @Description Used for internal DummyCore features. Do NOT change!
*/
public class DummyEventHandler {
public static int syncTime;
public static boolean[] isKeyPressed;
public void onBlockBeeingBroken(PlayerEvent.BreakSpeed event)
{
if(MiscUtils.isBlockUnbreakable(event.entityPlayer.worldObj, event.x, event.y, event.z))
{
event.setCanceled(true);
}
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onMainMenuGUISetup(InitGuiEvent.Pre event)
{
if(event.gui.getClass() == GuiMainMenu.class)
{
event.setCanceled(true);
MainMenuRegistry.newMainMenu(DummyConfig.getMainMenu());
}
if(event.gui instanceof IMainMenu)
{
if(MainMenuRegistry.menuList.get(DummyConfig.getMainMenu()) != event.gui.getClass())
{
event.setCanceled(true);
MainMenuRegistry.newMainMenu(DummyConfig.getMainMenu());
}
}
}
/**
* Totally going to get removed!
* @param event
*/
@Deprecated
@SideOnly(Side.CLIENT)
public void onClientTick(RenderTickEvent event)
{
try
{
if(isKeyPressed == null) isKeyPressed = new boolean[Keyboard.getKeyCount()];
if(FMLClientHandler.instance().getClientPlayerEntity() != null)
for(int i = 0; i < isKeyPressed.length; ++i)
{
if(Keyboard.isKeyDown(Keyboard.getKeyIndex(Keyboard.getKeyName(i))) && !isKeyPressed[i])
{
isKeyPressed[i] = true;
int id = i;
String keyName = Keyboard.getKeyName(i);
String username = FMLClientHandler.instance().getClientPlayerEntity().getCommandSenderName();
DummyData aaa = new DummyData("id",id);
DummyData aab = new DummyData("name",keyName);
DummyData aac = new DummyData("username",username);
DummyData aad = new DummyData("pressed",true);
DataStorage.addDataToString(aaa);
DataStorage.addDataToString(aab);
DataStorage.addDataToString(aac);
DataStorage.addDataToString(aad);
String dataString = DataStorage.getDataString();
DummyPacketIMSG packet = new DummyPacketIMSG("||mod:DummyCore.ButtonPress"+dataString);
DummyPacketHandler.sendToServer(packet);
}
if(!Keyboard.isKeyDown(Keyboard.getKeyIndex(Keyboard.getKeyName(i))) && isKeyPressed[i])
{
isKeyPressed[i] = false;
int id = i;
String keyName = Keyboard.getKeyName(i);
String username = FMLClientHandler.instance().getClientPlayerEntity().getCommandSenderName();
DummyData aaa = new DummyData("id",id);
DummyData aab = new DummyData("name",keyName);
DummyData aac = new DummyData("username",username);
DummyData aad = new DummyData("pressed",false);
DataStorage.addDataToString(aaa);
DataStorage.addDataToString(aab);
DataStorage.addDataToString(aac);
DataStorage.addDataToString(aad);
String dataString = DataStorage.getDataString();
DummyPacketIMSG packet = new DummyPacketIMSG("||mod:DummyCore.ButtonPress"+dataString);
DummyPacketHandler.sendToServer(packet);
}
}
}catch(Exception e)
{
DataStorage.getDataString();
return;
}
}
@SuppressWarnings("unchecked")
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onMainMenuGUISetup(InitGuiEvent.Post event)
{
if(event.gui instanceof IMainMenu)
{
event.buttonList.add(new GuiButton_ChangeGUI(65535, event.gui.width/2 + 104, event.gui.height/4 + 24 + 72, 100, 20, "Change Main Menu"));
}
}
@SubscribeEvent
public void onPacketRecieved(DummyEvent_OnPacketRecieved event)
{
DummyData[] packetData = DataStorage.parseData(event.recievedData);
if(packetData != null && packetData.length > 0)
{
try {
DummyData modData = packetData[0];
if(modData.fieldName.equalsIgnoreCase("mod") && modData.fieldValue.equalsIgnoreCase("dummycore.tilesync"))
{
int x = Integer.parseInt(packetData[1].fieldValue);
int y = Integer.parseInt(packetData[2].fieldValue);
int z = Integer.parseInt(packetData[3].fieldValue);
TileEntity tile = event.recievedEntity.worldObj.getTileEntity(x, y, z);
if(tile != null && tile instanceof ITEHasGameData)
{
DummyData[] tileShouldRecieve = Arrays.copyOfRange(packetData, 4, packetData.length);
((ITEHasGameData)tile).setData(tileShouldRecieve);
}
}
if(modData.fieldName.equalsIgnoreCase("mod") && modData.fieldValue.equalsIgnoreCase("dummycore.particle"))
{
String type = packetData[1].fieldValue;
float x = Float.parseFloat(packetData[2].fieldValue);
float y = Float.parseFloat(packetData[3].fieldValue);
float z = Float.parseFloat(packetData[4].fieldValue);
double r = Double.parseDouble(packetData[5].fieldValue);
double g = Double.parseDouble(packetData[6].fieldValue);
double b = Double.parseDouble(packetData[7].fieldValue);
event.recievedEntity.worldObj.spawnParticle(type, x, y, z, r, g, b);
}
if(modData.fieldName.equalsIgnoreCase("mod") && modData.fieldValue.equalsIgnoreCase("dummycore.infosync"))
{
String modName = packetData[1].fieldName;
String dataName = packetData[1].fieldValue;
String dataItself = event.recievedData.substring(event.recievedData.indexOf("||ddata:")+8);
MiscUtils.registeredClientWorldData.put(modName+"|"+dataName, dataItself);
}
if(modData.fieldName.equalsIgnoreCase("mod") && modData.fieldValue.equalsIgnoreCase("dummycore.playerinfosync"))
{
String playerName = packetData[1].fieldValue;
String modName = packetData[2].fieldName;
String dataName = packetData[2].fieldValue;
String dataItself = event.recievedData.substring(event.recievedData.indexOf("||ddata:")+8);
MiscUtils.registeredClientData.put(playerName+"_"+modName+"|"+dataName, dataItself);
}
if(modData.fieldName.equalsIgnoreCase("mod") && modData.fieldValue.equalsIgnoreCase("dummycore.biomechange"))
{
int x = Integer.parseInt(packetData[1].fieldValue);
int z = Integer.parseInt(packetData[2].fieldValue);
int id = Integer.parseInt(packetData[3].fieldValue);
World world = event.recievedEntity.worldObj;
Chunk chunk = world.getChunkFromBlockCoords(x,z);
byte[] biome = chunk.getBiomeArray();
int cbiome = biome[(z & 0xf) << 4 | x & 0xf];
cbiome = id & 0xff;
biome[(z & 0xf) << 4 | x & 0xf] = (byte) cbiome;
chunk.setBiomeArray(biome);
world.markBlocksDirtyVertical(x, z, 16, 16);
}
if(modData.fieldName.equalsIgnoreCase("mod") && modData.fieldValue.equalsIgnoreCase("dummyCore.buttonpress"))
{
int id = Integer.parseInt(packetData[1].fieldValue);
String name = packetData[2].fieldValue;
String username = packetData[3].fieldValue;
boolean pressed = Boolean.parseBoolean(packetData[4].fieldValue);
Side side = FMLCommonHandler.instance().getEffectiveSide();
if(side == Side.SERVER)
{
MinecraftServer server = MinecraftServer.getServer();
ServerConfigurationManager manager = server.getConfigurationManager();
EntityPlayer player = manager.func_152612_a(username);
MinecraftForge.EVENT_BUS.post(new DummyEvent_OnKeyboardKeyPressed_Server(id, name, player,pressed));
}
}
if(modData.fieldName.equalsIgnoreCase("mod") && modData.fieldValue.equalsIgnoreCase("dummyCore.guiButton"))
{
int id = Integer.parseInt(packetData[1].fieldValue);
String pClName = packetData[2].fieldValue;
String bClName = packetData[3].fieldValue;
String username = packetData[4].fieldValue;
int x = Integer.parseInt(packetData[5].fieldValue);
int y = Integer.parseInt(packetData[6].fieldValue);
int z = Integer.parseInt(packetData[7].fieldValue);
DummyData[] data = new DummyData[packetData.length-8];
for(int i = 8; i < packetData.length; ++i)
data[i-8] = packetData[i];
Side side = FMLCommonHandler.instance().getEffectiveSide();
if(side == Side.SERVER)
{
MinecraftServer server = MinecraftServer.getServer();
ServerConfigurationManager manager = server.getConfigurationManager();
EntityPlayer player = manager.func_152612_a(username);
MinecraftForge.EVENT_BUS.post(new DummyEvent_OnClientGUIButtonPress(id, pClName, bClName, player,x,y,z,data));
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
}
}
@SubscribeEvent
public void onDescrAdded(ItemTooltipEvent event)
{
ItemStack stack = event.itemStack;
String unlocName = stack.getUnlocalizedName();
if(MiscUtils.descriptionTable.containsKey(unlocName))
{
event.toolTip.add(MiscUtils.descriptionCTable.get(unlocName)+MiscUtils.descriptionTable.get(unlocName));
}else
{
stack.getItem();
List<? extends Object> list = Arrays.asList(Item.itemRegistry.getNameForObject(stack.getItem()),stack.getItemDamage());
if(MiscUtils.descriptionNTable.containsKey(list))
{
event.toolTip.add(MiscUtils.descriptionNCTable.get(list)+MiscUtils.descriptionNTable.get(list));
}
}
}
@SubscribeEvent
public void onPlayerTickEnd(PlayerTickEvent event)
{
EntityPlayer player = event.player;
IInventory inv = player.inventory;
for(int k = 0; k < inv.getSizeInventory(); ++k)
{
ItemStack s = inv.getStackInSlot(k);
if(s != null)
{
if(s.getItem() instanceof IAttributeModifier)
{
String itype = ((IAttributeModifier)s.getItem()).getType(s, player);
if(itype.equals("inventory"))
{
String last5OfUUID = ((IAttributeModifier)s.getItem()).last5OfUUID(s, player);
int operation = ((IAttributeModifier)s.getItem()).getOperation(s, player);
double ivalue = ((IAttributeModifier)s.getItem()).getValue(s, player);
IAttribute iattrib = ((IAttributeModifier)s.getItem()).getAttribute(s, player);
MiscUtils.applyPlayerModifier(player, iattrib, last5OfUUID, ivalue, false, operation, itype);
}else
{
if(itype.equals("hold") && player.getCurrentEquippedItem() == s)
{
String last5OfUUID = ((IAttributeModifier)s.getItem()).last5OfUUID(s, player);
int operation = ((IAttributeModifier)s.getItem()).getOperation(s, player);
double ivalue = ((IAttributeModifier)s.getItem()).getValue(s, player);
IAttribute iattrib = ((IAttributeModifier)s.getItem()).getAttribute(s, player);
MiscUtils.applyPlayerModifier(player, iattrib, last5OfUUID, ivalue, false, operation, itype);
}else
{
if(itype.equals("armor") && (player.inventory.armorInventory[0] == s ||player.inventory.armorInventory[1] == s ||player.inventory.armorInventory[2] == s ||player.inventory.armorInventory[3] == s))
{
String last5OfUUID = ((IAttributeModifier)s.getItem()).last5OfUUID(s, player);
int operation = ((IAttributeModifier)s.getItem()).getOperation(s, player);
double ivalue = ((IAttributeModifier)s.getItem()).getValue(s, player);
IAttribute iattrib = ((IAttributeModifier)s.getItem()).getAttribute(s, player);
MiscUtils.applyPlayerModifier(player, iattrib, last5OfUUID, ivalue, false, operation, itype);
}
}
}
}else
{
List<String> l = Arrays.asList(s.getItem().getUnlocalizedName(),Integer.toString(s.getItemDamage()));
if(MiscUtils.shouldIgnoreDamage.contains(s.getItem()))
l = Arrays.asList(s.getItem().getUnlocalizedName(),Integer.toString(-1));
if(MiscUtils.modifierType.containsKey(l))
{
String itype = MiscUtils.modifierType.get(l);
if(itype.equals("inventory"))
{
String last5OfUUID = MiscUtils.modifierUUID.get(l);
int operation = MiscUtils.modifierOperation.get(l);
double ivalue = MiscUtils.modifierValue.get(l);
IAttribute iattrib = MiscUtils.modifier.get(l);
MiscUtils.applyPlayerModifier(player, iattrib, last5OfUUID, ivalue, false, operation, itype);
}else
{
if(itype.equals("hold") && player.getCurrentEquippedItem() == s)
{
String last5OfUUID = MiscUtils.modifierUUID.get(l);
int operation = MiscUtils.modifierOperation.get(l);
double ivalue = MiscUtils.modifierValue.get(l);
IAttribute iattrib = MiscUtils.modifier.get(l);
MiscUtils.applyPlayerModifier(player, iattrib, last5OfUUID, ivalue, false, operation, itype);
}else
{
if(itype.equals("armor") && (player.inventory.armorInventory[0] == s ||player.inventory.armorInventory[1] == s ||player.inventory.armorInventory[2] == s ||player.inventory.armorInventory[3] == s))
{
String last5OfUUID = MiscUtils.modifierUUID.get(l);
int operation = MiscUtils.modifierOperation.get(l);
double ivalue = MiscUtils.modifierValue.get(l);
IAttribute iattrib = MiscUtils.modifier.get(l);
MiscUtils.applyPlayerModifier(player, iattrib, last5OfUUID, ivalue, false, operation, itype);
}
}
}
}
}
}
}
for(int i1 = 0; i1 < player.getAttributeMap().getAllAttributes().size(); ++i1)
{
IAttributeInstance ainst = (IAttributeInstance) player.getAttributeMap().getAllAttributes().toArray()[i1];
Collection<?> coll = ainst.func_111122_c();
for(int j = 0; j < coll.size(); ++j)
{
if(coll.toArray()[j] instanceof AttributeModifier)
{
AttributeModifier mod = (AttributeModifier) coll.toArray()[j];
String name = mod.getName();
boolean remove = true;
if(name.contains("dam."))
{
String sub = mod.getID().toString().substring(mod.getID().toString().length()-5, mod.getID().toString().length());
if(name.contains("hold"))
{
ItemStack s = player.getCurrentEquippedItem();
if(s != null)
{
if(s.getItem() instanceof IAttributeModifier)
{
String uuid = ((IAttributeModifier)s.getItem()).last5OfUUID(s, player).toLowerCase();
if(uuid.equals(sub))
remove = false;
}
List<String> l = Arrays.asList(s.getItem().getUnlocalizedName(),Integer.toString(s.getItemDamage()));
if(MiscUtils.shouldIgnoreDamage.contains(s.getItem()))
l = Arrays.asList(s.getItem().getUnlocalizedName(),Integer.toString(-1));
if(MiscUtils.modifierUUID.containsKey(l))
{
String uuid = MiscUtils.modifierUUID.get(l).toLowerCase();
if(uuid.equals(sub))
remove = false;
}
}
}
if(name.contains("inventory"))
{
IInventory inven = player.inventory;
for(int k = 0; k < inven.getSizeInventory(); ++k)
{
ItemStack s = inven.getStackInSlot(k);
if(s != null)
{
if(s.getItem() instanceof IAttributeModifier)
{
String uuid = ((IAttributeModifier)s.getItem()).last5OfUUID(s, player).toLowerCase();
if(uuid.equals(sub))
remove = false;
}
List<String> l = Arrays.asList(s.getItem().getUnlocalizedName(),Integer.toString(s.getItemDamage()));
if(MiscUtils.shouldIgnoreDamage.contains(s.getItem()))
l = Arrays.asList(s.getItem().getUnlocalizedName(),Integer.toString(-1));
if(MiscUtils.modifierUUID.containsKey(l))
{
String uuid = MiscUtils.modifierUUID.get(l).toLowerCase();
if(uuid.equals(sub))
remove = false;
}
}
}
}
if(name.contains("armor"))
{
for(int k = 0; k < player.inventory.armorInventory.length; ++k)
{
ItemStack s = player.inventory.armorInventory[k];
if(s != null)
{
if(s.getItem() instanceof IAttributeModifier)
{
String uuid = ((IAttributeModifier)s.getItem()).last5OfUUID(s, player).toLowerCase();
if(uuid.equals(sub))
remove = false;
}
List<String> l = Arrays.asList(s.getItem().getUnlocalizedName(),Integer.toString(s.getItemDamage()));
if(MiscUtils.shouldIgnoreDamage.contains(s.getItem()))
l = Arrays.asList(s.getItem().getUnlocalizedName(),Integer.toString(-1));
if(MiscUtils.modifierUUID.containsKey(l))
{
String uuid = MiscUtils.modifierUUID.get(l).toLowerCase();
if(uuid.equals(sub))
remove = false;
}
}
}
}
if(remove)
MiscUtils.applyPlayerModifier(player, ainst.getAttribute(), sub, 1, true, 0, "remove");
}
}
}
}
}
@SubscribeEvent
public void onServerTick(TickEvent.ServerTickEvent event)
{
if(event.phase == Phase.END)
{
++syncTime;
if(syncTime >= DummyConfig.dummyCoreSyncTimer)
{
syncTime = 0;
SyncUtils.makeSync_LotsSmallPackets();
}
}
}
}
+20 -20
View File
@@ -1,20 +1,20 @@
package DummyCore.Utils;
import java.util.Hashtable;
import java.util.UUID;
import com.mojang.authlib.GameProfile;
public class DummyFakePlayerFactory {
public static Hashtable<Class, GameProfile> fakeProfiles = new Hashtable();
public static GameProfile getGameProfile(Class mod)
{
if(fakeProfiles.get(mod) == null)
{
fakeProfiles.put(mod, new GameProfile(UUID.randomUUID(), "[DC]["+mod.getSimpleName()+"]"));
}
return fakeProfiles.get(mod);
}
}
package DummyCore.Utils;
import java.util.Hashtable;
import java.util.UUID;
import com.mojang.authlib.GameProfile;
public class DummyFakePlayerFactory {
public static Hashtable<Class<?>, GameProfile> fakeProfiles = new Hashtable<Class<?>, GameProfile>();
public static GameProfile getGameProfile(Class<?> mod)
{
if(fakeProfiles.get(mod) == null)
{
fakeProfiles.put(mod, new GameProfile(UUID.randomUUID(), "[DC]["+mod.getSimpleName()+"]"));
}
return fakeProfiles.get(mod);
}
}
View File
File mode changed.
+55 -82
View File
@@ -1,83 +1,56 @@
package DummyCore.Utils;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.util.Collections;
import java.util.Comparator;
import java.util.EnumMap;
import java.util.LinkedList;
import java.util.List;
import DummyCore.Core.CoreInitialiser;
import DummyCore.Events.DummyEvent_OnPacketRecieved;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.network.INetHandler;
import net.minecraft.network.NetHandlerPlayServer;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.network.FMLEmbeddedChannel;
import cpw.mods.fml.common.network.FMLOutboundHandler;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.common.network.internal.FMLProxyPacket;
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;
import cpw.mods.fml.server.FMLServerHandler;
import io.netty.channel.ChannelHandler;
import io.netty.handler.codec.MessageToMessageCodec;
@ChannelHandler.Sharable
public class DummyPacketHandler implements IMessageHandler<DummyPacketIMSG, IMessage> {
@Override
public IMessage onMessage(DummyPacketIMSG message, MessageContext ctx)
{
Side s = ctx.side;
if(s == Side.CLIENT)
{
MinecraftForge.EVENT_BUS.post(new DummyEvent_OnPacketRecieved(s, message.dataStr, CoreInitialiser.proxy.getPlayerOnSide(ctx.getClientHandler())));
}else
{
MinecraftForge.EVENT_BUS.post(new DummyEvent_OnPacketRecieved(s, message.dataStr, CoreInitialiser.proxy.getPlayerOnSide(ctx.getServerHandler())));
}
return null;
}
public static void sendToAll(DummyPacketIMSG message)
{
CoreInitialiser.network.sendToAll(message);
}
public static void sendToAllAround(DummyPacketIMSG message, TargetPoint pnt)
{
CoreInitialiser.network.sendToAllAround(message, pnt);
}
public static void sendToAllAround(DummyPacketIMSG message, int dim)
{
CoreInitialiser.network.sendToDimension(message, dim);
}
public static void sendToPlayer(DummyPacketIMSG message, EntityPlayerMP player)
{
CoreInitialiser.network.sendTo(message, (EntityPlayerMP) player);
}
public static void sendToServer(DummyPacketIMSG message)
{
CoreInitialiser.network.sendToServer(message);
}
package DummyCore.Utils;
import DummyCore.Core.CoreInitialiser;
import DummyCore.Events.DummyEvent_OnPacketRecieved;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
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 io.netty.channel.ChannelHandler;
@ChannelHandler.Sharable
public class DummyPacketHandler implements IMessageHandler<DummyPacketIMSG, IMessage> {
@Override
public IMessage onMessage(DummyPacketIMSG message, MessageContext ctx)
{
Side s = ctx.side;
if(s == Side.CLIENT)
{
MinecraftForge.EVENT_BUS.post(new DummyEvent_OnPacketRecieved(s, message.dataStr, CoreInitialiser.proxy.getPlayerOnSide(ctx.getClientHandler())));
}else
{
MinecraftForge.EVENT_BUS.post(new DummyEvent_OnPacketRecieved(s, message.dataStr, CoreInitialiser.proxy.getPlayerOnSide(ctx.getServerHandler())));
}
return null;
}
public static void sendToAll(DummyPacketIMSG message)
{
CoreInitialiser.network.sendToAll(message);
}
public static void sendToAllAround(DummyPacketIMSG message, TargetPoint pnt)
{
CoreInitialiser.network.sendToAllAround(message, pnt);
}
public static void sendToAllAround(DummyPacketIMSG message, int dim)
{
CoreInitialiser.network.sendToDimension(message, dim);
}
public static void sendToPlayer(DummyPacketIMSG message, EntityPlayerMP player)
{
CoreInitialiser.network.sendTo(message, (EntityPlayerMP) player);
}
public static void sendToServer(DummyPacketIMSG message)
{
CoreInitialiser.network.sendToServer(message);
}
}
+32 -32
View File
@@ -1,32 +1,32 @@
package DummyCore.Utils;
import io.netty.buffer.ByteBuf;
import cpw.mods.fml.common.network.ByteBufUtils;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
public class DummyPacketIMSG implements IMessage{
public String dataStr;
public DummyPacketIMSG()
{
}
public DummyPacketIMSG(String data)
{
dataStr = data;
}
@Override
public void fromBytes(ByteBuf buf) {
dataStr = ByteBufUtils.readUTF8String(buf);
}
@Override
public void toBytes(ByteBuf buf) {
ByteBufUtils.writeUTF8String(buf, dataStr);
}
}
package DummyCore.Utils;
import io.netty.buffer.ByteBuf;
import cpw.mods.fml.common.network.ByteBufUtils;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
public class DummyPacketIMSG implements IMessage{
public String dataStr;
public DummyPacketIMSG()
{
}
public DummyPacketIMSG(String data)
{
dataStr = data;
}
@Override
public void fromBytes(ByteBuf buf) {
dataStr = ByteBufUtils.readUTF8String(buf);
}
@Override
public void toBytes(ByteBuf buf) {
ByteBufUtils.writeUTF8String(buf, dataStr);
}
}
+39 -40
View File
@@ -1,40 +1,39 @@
package DummyCore.Utils;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import io.netty.buffer.ByteBuf;
import cpw.mods.fml.common.network.ByteBufUtils;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
public class DummyPacketIMSG_Tile implements IMessage{
public NBTTagCompound dataTag;
public DummyPacketIMSG_Tile()
{
}
public DummyPacketIMSG_Tile(NBTTagCompound data, int id)
{
dataTag = data;
dataTag.setInteger("packetID", id);
}
public DummyPacketIMSG_Tile(NBTTagCompound data)
{
dataTag = data;
}
@Override
public void fromBytes(ByteBuf buf) {
dataTag = ByteBufUtils.readTag(buf);
}
@Override
public void toBytes(ByteBuf buf) {
ByteBufUtils.writeTag(buf, dataTag);
}
}
package DummyCore.Utils;
import net.minecraft.nbt.NBTTagCompound;
import io.netty.buffer.ByteBuf;
import cpw.mods.fml.common.network.ByteBufUtils;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
public class DummyPacketIMSG_Tile implements IMessage{
public NBTTagCompound dataTag;
public DummyPacketIMSG_Tile()
{
}
public DummyPacketIMSG_Tile(NBTTagCompound data, int id)
{
dataTag = data;
dataTag.setInteger("packetID", id);
}
public DummyPacketIMSG_Tile(NBTTagCompound data)
{
dataTag = data;
}
@Override
public void fromBytes(ByteBuf buf) {
dataTag = ByteBufUtils.readTag(buf);
}
@Override
public void toBytes(ByteBuf buf) {
ByteBufUtils.writeTag(buf, dataTag);
}
}
+6 -6
View File
@@ -1,6 +1,6 @@
package DummyCore.Utils;
@Deprecated
public class DummyPlayerTickTracker {
}
package DummyCore.Utils;
@Deprecated
public class DummyPlayerTickTracker {
}
+61 -90
View File
@@ -1,91 +1,62 @@
package DummyCore.Utils;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.util.Collections;
import java.util.Comparator;
import java.util.EnumMap;
import java.util.LinkedList;
import java.util.List;
import DummyCore.Core.CoreInitialiser;
import DummyCore.Events.DummyEvent_OnPacketRecieved;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.network.INetHandler;
import net.minecraft.network.NetHandlerPlayServer;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.network.FMLEmbeddedChannel;
import cpw.mods.fml.common.network.FMLOutboundHandler;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.common.network.internal.FMLProxyPacket;
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;
import cpw.mods.fml.server.FMLServerHandler;
import io.netty.channel.ChannelHandler;
import io.netty.handler.codec.MessageToMessageCodec;
@ChannelHandler.Sharable
public class DummyTilePacketHandler implements IMessageHandler<DummyPacketIMSG_Tile, IMessage> {
@Override
public IMessage onMessage(DummyPacketIMSG_Tile message, MessageContext ctx)
{
Side s = ctx.side;
int packetID = -10;
if(message.dataTag.hasKey("packetID"))
{
packetID = message.dataTag.getInteger("packetID");
message.dataTag.removeTag("packetID");
}
S35PacketUpdateTileEntity genPkt = new S35PacketUpdateTileEntity(message.dataTag.getInteger("x"),message.dataTag.getInteger("y"),message.dataTag.getInteger("z"),packetID,message.dataTag);
if(s == Side.CLIENT)
{
ctx.getClientHandler().handleUpdateTileEntity(genPkt);
}else
{
}
return null;
}
public static void sendToAll(DummyPacketIMSG_Tile message)
{
CoreInitialiser.network.sendToAll(message);
}
public static void sendToAllAround(DummyPacketIMSG_Tile message, TargetPoint pnt)
{
CoreInitialiser.network.sendToAllAround(message, pnt);
}
public static void sendToAllAround(DummyPacketIMSG_Tile message, int dim)
{
CoreInitialiser.network.sendToDimension(message, dim);
}
public static void sendToPlayer(DummyPacketIMSG_Tile message, EntityPlayerMP player)
{
CoreInitialiser.network.sendTo(message, (EntityPlayerMP) player);
}
public static void sendToServer(DummyPacketIMSG_Tile message)
{
CoreInitialiser.network.sendToServer(message);
}
package DummyCore.Utils;
import DummyCore.Core.CoreInitialiser;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
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 io.netty.channel.ChannelHandler;
@ChannelHandler.Sharable
public class DummyTilePacketHandler implements IMessageHandler<DummyPacketIMSG_Tile, IMessage> {
@Override
public IMessage onMessage(DummyPacketIMSG_Tile message, MessageContext ctx)
{
Side s = ctx.side;
int packetID = -10;
if(message.dataTag.hasKey("packetID"))
{
packetID = message.dataTag.getInteger("packetID");
message.dataTag.removeTag("packetID");
}
S35PacketUpdateTileEntity genPkt = new S35PacketUpdateTileEntity(message.dataTag.getInteger("x"),message.dataTag.getInteger("y"),message.dataTag.getInteger("z"),packetID,message.dataTag);
if(s == Side.CLIENT)
{
ctx.getClientHandler().handleUpdateTileEntity(genPkt);
}else
{
}
return null;
}
public static void sendToAll(DummyPacketIMSG_Tile message)
{
CoreInitialiser.network.sendToAll(message);
}
public static void sendToAllAround(DummyPacketIMSG_Tile message, TargetPoint pnt)
{
CoreInitialiser.network.sendToAllAround(message, pnt);
}
public static void sendToAllAround(DummyPacketIMSG_Tile message, int dim)
{
CoreInitialiser.network.sendToDimension(message, dim);
}
public static void sendToPlayer(DummyPacketIMSG_Tile message, EntityPlayerMP player)
{
CoreInitialiser.network.sendTo(message, (EntityPlayerMP) player);
}
public static void sendToServer(DummyPacketIMSG_Tile message)
{
CoreInitialiser.network.sendToServer(message);
}
}
+19 -19
View File
@@ -1,19 +1,19 @@
package DummyCore.Utils;
@Deprecated
public enum EnumGuiPosition {
TOPLEFT,
TOPRIGHT,
BOTLEFT,
BOTRIGHT,
CENTER;
public int x;
public int y;
EnumGuiPosition()
{
}
}
package DummyCore.Utils;
@Deprecated
public enum EnumGuiPosition {
TOPLEFT,
TOPRIGHT,
BOTLEFT,
BOTRIGHT,
CENTER;
public int x;
public int y;
EnumGuiPosition()
{
}
}
+53 -56
View File
@@ -1,56 +1,53 @@
package DummyCore.Utils;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author Modbder
* @version From DummyCore 1.1
* @Description Used to work with multi-colored light system.
*/
public enum EnumLightColor {
BLACK(51,51,51),
RED(255,51,51),
GREEN(51,255,51),
BROWN(102,51,51),
BLUE(51,51,255),
PURPLE(255,51,255),
CYAN(51,153,255),
SILVER(153,153,153),
GRAY(102,102,102),
PINK(255,102,102),
LIME(102,255,51),
YELLOW(255,255,51),
LIGHTBLUE(153,153,255),
MAGENTA(255,51,204),
ORANGE(255,153,51),
WHITE(204,204,204)
;
private EnumLightColor(int red, int green, int blue)
{
mainColor = new DummyColor(red, green, blue);
colorID = setGlobal();
}
private DummyColor mainColor;
public DummyColor getColor()
{
return mainColor;
}
private int setGlobal()
{
return ++globalID;
}
public int getLightID()
{
return colorID;
}
private int colorID = 0;
private static int globalID = -1;
}
package DummyCore.Utils;
/**
*
* @author Modbder
* @version From DummyCore 1.1
* @Description Used to work with multi-colored light system.
*/
public enum EnumLightColor {
BLACK(51,51,51),
RED(255,51,51),
GREEN(51,255,51),
BROWN(102,51,51),
BLUE(51,51,255),
PURPLE(255,51,255),
CYAN(51,153,255),
SILVER(153,153,153),
GRAY(102,102,102),
PINK(255,102,102),
LIME(102,255,51),
YELLOW(255,255,51),
LIGHTBLUE(153,153,255),
MAGENTA(255,51,204),
ORANGE(255,153,51),
WHITE(204,204,204)
;
private EnumLightColor(int red, int green, int blue)
{
mainColor = new DummyColor(red, green, blue);
colorID = setGlobal();
}
private DummyColor mainColor;
public DummyColor getColor()
{
return mainColor;
}
private int setGlobal()
{
return ++globalID;
}
public int getLightID()
{
return colorID;
}
private int colorID = 0;
private static int globalID = -1;
}
+51 -51
View File
@@ -1,51 +1,51 @@
package DummyCore.Utils;
public enum EnumRarityColor {
BROKEN("8","Broken"),
COMMON("f","Common"),
GOOD("a","Good"),
UNCOMMON("2","Uncommon"),
RARE("9","Rare"),
UNIQUE("d","Unique"),
EPIC("e","Epic"),
LEGENDARY("6","Legendary"),
EXCEPTIONAL("b","Exceptional"),
PERFECT("3","Perfect"),
ULTIMATE("c","Ultimate"),
TURQUOISE("4","Turquoise"),
;
EnumRarityColor(String s, String s1)
{
value = s;
name = s1;
}
private String value;
private String name;
public String getRarityColor()
{
String ret = new String();
ret += "\247";
ret+=value;
return ret;
}
public String getName()
{
return name;
}
public static EnumRarityColor getColorByHex(String hex)
{
EnumRarityColor retColor = BROKEN;
for(int i = 0; i < values().length;++i)
{
EnumRarityColor color = values()[i];
if(color.value.equalsIgnoreCase(hex))
return color;
}
return retColor;
}
}
package DummyCore.Utils;
public enum EnumRarityColor {
BROKEN("8","Broken"),
COMMON("f","Common"),
GOOD("a","Good"),
UNCOMMON("2","Uncommon"),
RARE("9","Rare"),
UNIQUE("d","Unique"),
EPIC("e","Epic"),
LEGENDARY("6","Legendary"),
EXCEPTIONAL("b","Exceptional"),
PERFECT("3","Perfect"),
ULTIMATE("c","Ultimate"),
TURQUOISE("4","Turquoise"),
;
EnumRarityColor(String s, String s1)
{
value = s;
name = s1;
}
private String value;
private String name;
public String getRarityColor()
{
String ret = new String();
ret += "\247";
ret+=value;
return ret;
}
public String getName()
{
return name;
}
public static EnumRarityColor getColorByHex(String hex)
{
EnumRarityColor retColor = BROKEN;
for(int i = 0; i < values().length;++i)
{
EnumRarityColor color = values()[i];
if(color.value.equalsIgnoreCase(hex))
return color;
}
return retColor;
}
}
+7
View File
@@ -0,0 +1,7 @@
package DummyCore.Utils;
public @interface ExistanceCheck {
String[] classPath();
}
+31 -35
View File
@@ -1,35 +1,31 @@
package DummyCore.Utils;
import java.util.ArrayList;
import java.util.List;
import DummyCore.Client.GuiCommon;
import net.minecraft.client.gui.Gui;
import net.minecraft.inventory.Container;
public class GuiContainerLibrary {
public static List<String> guis = new ArrayList();
public static List<String> containers = new ArrayList();
/**
* Can be used for easier GUI opening, if you do not want to make a Proxy for that. This method should only be used to open simple GUIs(tile entity ones)
* @param guiClassPath - the path to GUI class. Gui class should extend GuiCommon!
* @param containerClassPath - the path to your Container class.
* @return the ID with which you should use to open your GUI on block right-click.
*/
public static int registerGuiContainer(String guiClassPath, String containerClassPath)
{
int lstSize = guis.size();
try
{
guis.add(guiClassPath);
containers.add(containerClassPath);
}catch(Exception e)
{
Notifier.notifySimple("Unable to register GUI-Container with ID "+lstSize);
e.printStackTrace();
return -1;
}
return lstSize;
}
}
package DummyCore.Utils;
import java.util.ArrayList;
import java.util.List;
public class GuiContainerLibrary {
public static List<String> guis = new ArrayList<String>();
public static List<String> containers = new ArrayList<String>();
/**
* Can be used for easier GUI opening, if you do not want to make a Proxy for that. This method should only be used to open simple GUIs(tile entity ones)
* @param guiClassPath - the path to GUI class. Gui class should extend GuiCommon!
* @param containerClassPath - the path to your Container class.
* @return the ID with which you should use to open your GUI on block right-click.
*/
public static int registerGuiContainer(String guiClassPath, String containerClassPath)
{
int lstSize = guis.size();
try
{
guis.add(guiClassPath);
containers.add(containerClassPath);
}catch(Exception e)
{
Notifier.notifySimple("Unable to register GUI-Container with ID "+lstSize);
e.printStackTrace();
return -1;
}
return lstSize;
}
}
+19 -19
View File
@@ -1,19 +1,19 @@
package DummyCore.Utils;
import net.minecraft.entity.ai.attributes.IAttribute;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
public interface IAttributeModifier {
public abstract String getType(ItemStack stack, EntityPlayer p);
public abstract double getValue(ItemStack stack, EntityPlayer p);
public abstract IAttribute getAttribute(ItemStack stack, EntityPlayer p);
public abstract String last5OfUUID(ItemStack stack, EntityPlayer p);
public abstract int getOperation(ItemStack stack, EntityPlayer p);
}
package DummyCore.Utils;
import net.minecraft.entity.ai.attributes.IAttribute;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
public interface IAttributeModifier {
public abstract String getType(ItemStack stack, EntityPlayer p);
public abstract double getValue(ItemStack stack, EntityPlayer p);
public abstract IAttribute getAttribute(ItemStack stack, EntityPlayer p);
public abstract String last5OfUUID(ItemStack stack, EntityPlayer p);
public abstract int getOperation(ItemStack stack, EntityPlayer p);
}
+20 -20
View File
@@ -1,20 +1,20 @@
package DummyCore.Utils;
import net.minecraftforge.common.config.Configuration;
/**
*
* @author Modbder
* @version From DummyCore 1.0
* @Description Your config class must implement this to work. Used for easier way of working with configs and for DummyCore handling.
*/
public interface IDummyConfig {
/**
* Automatically called every time your mod is registered in the DummyCore.
* @version From DummyCore 1.0
* @param config - Forge configuration file automatically created.
*/
public abstract void load(Configuration config);
}
package DummyCore.Utils;
import net.minecraftforge.common.config.Configuration;
/**
*
* @author Modbder
* @version From DummyCore 1.0
* @Description Your config class must implement this to work. Used for easier way of working with configs and for DummyCore handling.
*/
public interface IDummyConfig {
/**
* Automatically called every time your mod is registered in the DummyCore.
* @version From DummyCore 1.0
* @param config - Forge configuration file automatically created.
*/
public abstract void load(Configuration config);
}
View File
File mode changed.
View File
File mode changed.
Regular → Executable
+5 -11
View File
@@ -1,11 +1,5 @@
package DummyCore.Utils;
import java.util.List;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.util.ResourceLocation;
public interface IMainMenu {
}
package DummyCore.Utils;
public interface IMainMenu {
}
+11 -11
View File
@@ -1,11 +1,11 @@
package DummyCore.Utils;
public interface ITEHasGameData {
public abstract String getData();
public abstract void setData(DummyData[] data);
public abstract Coord3D getPosition();
}
package DummyCore.Utils;
public interface ITEHasGameData {
public abstract String getData();
public abstract void setData(DummyData[] data);
public abstract Coord3D getPosition();
}
Regular → Executable
+149 -156
View File
@@ -1,156 +1,149 @@
package DummyCore.Utils;
import java.util.Random;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.Color;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.MathHelper;
import net.minecraft.util.Vec3;
/**
*
* @author Modbder
* @version From DummyCore 1.9
* @Description used to create a lightning graphical effect between 2 points.
*/
public class Lightning {
public Random rnd;
public Coord3D[] lightningVecsStart;
public Coord3D[] lightningVecsEnd;
public Coord3D start;
public Coord3D end;
public float renderTicksExisted;
public float[] getLightningColor = new float[3];
/**
* Creates a lightning
* @param rand - the random on which your lightning will be built upon.
* @param begin - the beginning point of the lightning. This NEVER should relate to coordinates in the world! Instead, it can be 0,0,0, if you want the lightning to be created from the bottom corner of a block, for example.
* @param stop - the end point of the lightning. This NEVER should relate to coordinates in the world! Instead, it can be 0,10,0, if you want the lightning to go 10 blocks higher.
* @param curve - the amount of curving in your lightning. Usually somewhat around 0.3F if you want the lightning to look realistic. If you put 0.0F it will be a straight line, and 1.0F can lead to weird stuff.
* @param color - the color array, representing the color of the lightning.
*/
public Lightning(Random rand, Coord3D begin, Coord3D stop,float curve, float... color)
{
rnd = rand;
start = begin;
end = stop;
getLightningColor = color;
curve(curve);
}
private void curve(float factor)
{
int mainDivisions = rnd.nextInt(3)+2;
float distX = end.x-start.x;
float distY = end.y-start.y;
float distZ = end.z-start.z;
float genDistance = (float) Math.sqrt(distX*distX+distY*distY+distZ*distZ);
lightningVecsStart = new Coord3D[64];
lightningVecsEnd = new Coord3D[64];
generateLightningBetween2Points(start, end, 0, 8, factor);
generateLightningBetween2Points(lightningVecsStart[3], new Coord3D(end.x*(factor*10),end.y,end.z*(factor*10)), 8, 4, factor*3);
int genIndex = 0;
for(int i = 0; i < 12; ++i)
{
int rndSteps = rnd.nextInt(2);
genIndex += (1+rndSteps);
generateLightningBetween2Points(lightningVecsStart[i], new Coord3D(lightningVecsStart[i].x+MathUtils.randomFloat(rnd)*(genDistance/4), lightningVecsStart[i].y+MathUtils.randomFloat(rnd)*(genDistance/4),lightningVecsStart[i].z+MathUtils.randomFloat(rnd)*(genDistance/4)),12+i,1+rndSteps,factor/2);
}
for(int i = 12; i < 12+genIndex; ++i)
{
if(lightningVecsStart[i] != null)
generateLightningBetween2Points(lightningVecsStart[i], new Coord3D(lightningVecsStart[i].x+MathUtils.randomFloat(rnd)*(genDistance/8), lightningVecsStart[i].y+MathUtils.randomFloat(rnd)*(genDistance/8),lightningVecsStart[i].z+MathUtils.randomFloat(rnd)*(genDistance/8)),12+genIndex+i,0,factor);
}
}
private void generateLightningBetween2Points(Coord3D from, Coord3D to,int beginVecIndex, int steps, float curve)
{
float distX = to.x-from.x;
float distY = to.y-from.y;
float distZ = to.z-from.z;
for(int i = 0; i < steps; ++i)
{
if(i == 0)
{
lightningVecsStart[beginVecIndex+i] = from;
lightningVecsEnd[beginVecIndex+i] = new Coord3D(lightningVecsStart[beginVecIndex+i].x+distX/steps+MathUtils.randomFloat(rnd)*curve,lightningVecsStart[beginVecIndex+i].y+distY/steps+MathUtils.randomFloat(rnd)*curve,lightningVecsStart[beginVecIndex+i].z+distZ/steps+MathUtils.randomFloat(rnd)*curve);
}else
{
lightningVecsStart[beginVecIndex+i] = lightningVecsEnd[beginVecIndex+i-1];
lightningVecsEnd[beginVecIndex+i] = new Coord3D(lightningVecsStart[beginVecIndex+i].x+distX/steps+MathUtils.randomFloat(rnd)*curve,lightningVecsStart[beginVecIndex+i].y+distY/steps+MathUtils.randomFloat(rnd)*curve,lightningVecsStart[beginVecIndex+i].z+distZ/steps+MathUtils.randomFloat(rnd)*curve);
}
}
}
/**
* Use this anywhere in your render code to actually render the lightning.
* @param x
* @param y
* @param z
* @param partialTicks
*/
public void render(double x, double y, double z, float partialTicks)
{
renderTicksExisted += partialTicks/1F;
if(renderTicksExisted >= this.lightningVecsStart.length)
renderTicksExisted = this.lightningVecsStart.length;
GL11.glPushMatrix();
GL11.glEnable(2929);
GL11.glEnable(3042);
GL11.glBlendFunc(770, 771);
GL11.glDisable(3553);
GL11.glDisable(2896);
GL11.glTranslated(x, y, z);
for(int i = 0; i < renderTicksExisted; ++i)
{
if(this.lightningVecsStart[i] != null)
{
this.renderBeam(lightningVecsStart[i], lightningVecsEnd[i], 0.8F);
this.renderBeam(lightningVecsStart[i], lightningVecsEnd[i], 1F);
}
}
GL11.glEnable(2896);
GL11.glEnable(3553);
GL11.glPopMatrix();
}
public void renderBeam(Coord3D begin, Coord3D stop, float type)
{
if(type != 1F)
GL11.glLineWidth(3);
else
GL11.glLineWidth(1);
GL11.glPushMatrix();
GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F);
GL11.glEnable(GL11.GL_BLEND);
GL11.glShadeModel(GL11.GL_SMOOTH);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glDisable(GL11.GL_ALPHA_TEST);
GL11.glBegin(1);
if(type != 1)
GL11.glColor4f(1,1,1,0.2F);
else
GL11.glColor4f(this.getLightningColor[0],this.getLightningColor[1],this.getLightningColor[2],0.8F);
GL11.glVertex3d(begin.x, begin.y, begin.z);
GL11.glVertex3d(stop.x, stop.y, stop.z);
GL11.glColor3d(1.0D, 1.0D, 1.0D);
GL11.glEnd();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_ALPHA_TEST);
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glPopMatrix();
}
}
package DummyCore.Utils;
import java.util.Random;
import org.lwjgl.opengl.GL11;
/**
*
* @author Modbder
* @version From DummyCore 1.9
* @Description used to create a lightning graphical effect between 2 points.
*/
public class Lightning {
public Random rnd;
public Coord3D[] lightningVecsStart;
public Coord3D[] lightningVecsEnd;
public Coord3D start;
public Coord3D end;
public float renderTicksExisted;
public float[] getLightningColor = new float[3];
/**
* Creates a lightning
* @param rand - the random on which your lightning will be built upon.
* @param begin - the beginning point of the lightning. This NEVER should relate to coordinates in the world! Instead, it can be 0,0,0, if you want the lightning to be created from the bottom corner of a block, for example.
* @param stop - the end point of the lightning. This NEVER should relate to coordinates in the world! Instead, it can be 0,10,0, if you want the lightning to go 10 blocks higher.
* @param curve - the amount of curving in your lightning. Usually somewhat around 0.3F if you want the lightning to look realistic. If you put 0.0F it will be a straight line, and 1.0F can lead to weird stuff.
* @param color - the color array, representing the color of the lightning.
*/
public Lightning(Random rand, Coord3D begin, Coord3D stop,float curve, float... color)
{
rnd = rand;
start = begin;
end = stop;
getLightningColor = color;
curve(curve);
}
private void curve(float factor)
{
float distX = end.x-start.x;
float distY = end.y-start.y;
float distZ = end.z-start.z;
float genDistance = (float) Math.sqrt(distX*distX+distY*distY+distZ*distZ);
lightningVecsStart = new Coord3D[64];
lightningVecsEnd = new Coord3D[64];
generateLightningBetween2Points(start, end, 0, 8, factor);
generateLightningBetween2Points(lightningVecsStart[3], new Coord3D(end.x*(factor*10),end.y,end.z*(factor*10)), 8, 4, factor*3);
int genIndex = 0;
for(int i = 0; i < 12; ++i)
{
int rndSteps = rnd.nextInt(2);
genIndex += (1+rndSteps);
generateLightningBetween2Points(lightningVecsStart[i], new Coord3D(lightningVecsStart[i].x+MathUtils.randomFloat(rnd)*(genDistance/4), lightningVecsStart[i].y+MathUtils.randomFloat(rnd)*(genDistance/4),lightningVecsStart[i].z+MathUtils.randomFloat(rnd)*(genDistance/4)),12+i,1+rndSteps,factor/2);
}
for(int i = 12; i < 12+genIndex; ++i)
{
if(lightningVecsStart[i] != null)
generateLightningBetween2Points(lightningVecsStart[i], new Coord3D(lightningVecsStart[i].x+MathUtils.randomFloat(rnd)*(genDistance/8), lightningVecsStart[i].y+MathUtils.randomFloat(rnd)*(genDistance/8),lightningVecsStart[i].z+MathUtils.randomFloat(rnd)*(genDistance/8)),12+genIndex+i,0,factor);
}
}
private void generateLightningBetween2Points(Coord3D from, Coord3D to,int beginVecIndex, int steps, float curve)
{
float distX = to.x-from.x;
float distY = to.y-from.y;
float distZ = to.z-from.z;
for(int i = 0; i < steps; ++i)
{
if(i == 0)
{
lightningVecsStart[beginVecIndex+i] = from;
lightningVecsEnd[beginVecIndex+i] = new Coord3D(lightningVecsStart[beginVecIndex+i].x+distX/steps+MathUtils.randomFloat(rnd)*curve,lightningVecsStart[beginVecIndex+i].y+distY/steps+MathUtils.randomFloat(rnd)*curve,lightningVecsStart[beginVecIndex+i].z+distZ/steps+MathUtils.randomFloat(rnd)*curve);
}else
{
lightningVecsStart[beginVecIndex+i] = lightningVecsEnd[beginVecIndex+i-1];
lightningVecsEnd[beginVecIndex+i] = new Coord3D(lightningVecsStart[beginVecIndex+i].x+distX/steps+MathUtils.randomFloat(rnd)*curve,lightningVecsStart[beginVecIndex+i].y+distY/steps+MathUtils.randomFloat(rnd)*curve,lightningVecsStart[beginVecIndex+i].z+distZ/steps+MathUtils.randomFloat(rnd)*curve);
}
}
}
/**
* Use this anywhere in your render code to actually render the lightning.
* @param x
* @param y
* @param z
* @param partialTicks
*/
public void render(double x, double y, double z, float partialTicks)
{
renderTicksExisted += partialTicks/1F;
if(renderTicksExisted >= this.lightningVecsStart.length)
renderTicksExisted = this.lightningVecsStart.length;
GL11.glPushMatrix();
GL11.glEnable(2929);
GL11.glEnable(3042);
GL11.glBlendFunc(770, 771);
GL11.glDisable(3553);
GL11.glDisable(2896);
GL11.glTranslated(x, y, z);
for(int i = 0; i < renderTicksExisted; ++i)
{
if(this.lightningVecsStart[i] != null)
{
this.renderBeam(lightningVecsStart[i], lightningVecsEnd[i], 0.8F);
this.renderBeam(lightningVecsStart[i], lightningVecsEnd[i], 1F);
}
}
GL11.glEnable(2896);
GL11.glEnable(3553);
GL11.glPopMatrix();
}
public void renderBeam(Coord3D begin, Coord3D stop, float type)
{
if(type != 1F)
GL11.glLineWidth(3);
else
GL11.glLineWidth(1);
GL11.glPushMatrix();
GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F);
GL11.glEnable(GL11.GL_BLEND);
GL11.glShadeModel(GL11.GL_SMOOTH);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glDisable(GL11.GL_ALPHA_TEST);
GL11.glBegin(1);
if(type != 1)
GL11.glColor4f(1,1,1,0.2F);
else
GL11.glColor4f(this.getLightningColor[0],this.getLightningColor[1],this.getLightningColor[2],0.8F);
GL11.glVertex3d(begin.x, begin.y, begin.z);
GL11.glVertex3d(stop.x, stop.y, stop.z);
GL11.glColor3d(1.0D, 1.0D, 1.0D);
GL11.glEnd();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_ALPHA_TEST);
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glPopMatrix();
}
}
Regular → Executable
+174 -174
View File
@@ -1,174 +1,174 @@
package DummyCore.Utils;
import java.util.Random;
/**
*
* @author Modbder
* @version From DummyCore 1.0
* @Description can be used to save you some time writing mathematical functions.
*
*/
public class MathUtils {
/**
* Used to get the size of a texture in pixels using current values. Very useful in any kind of progress bars in GUI
* @version From DummyCore 1.0
* @param current - the current value
* @param max - the maximum value
* @param textureSize - the maximum texture size
* @return Percentage-based int. For example, if the textureSize is 50, current is 100 and max is 200 this will return 25 - that is 50% of your texture size.
*/
public static int pixelatedTextureSize(int current, int max, int textureSize)
{
if(current > max)
current = max;
float m = (float)current/max*100;
float n = m/100*textureSize;
return (int)n;
}
/**
* Used to get the persentage between 2 numbers
* @version From DummyCore 1.0
* @param current - the current value
* @param max - the maximum value
* @return Percentage-based int. For example, if current is 100 and max is 200 this will return 50.
*/
public static int getPercentage(int current, int max)
{
float m = (float)current/max*100;
return (int)m;
}
/**
* Used to get the polar-based offset between 2 points in vec2D coord system.
* @version From DummyCore 1.0
* @param position - the current vec2D
* @param angle - the angle of offset
* @param distance - the distance the point will be offset
* @return new Coord2D with offset coords.
*/
public static Coord2D polarOffset(Coord2D position, float angle, float distance)
{
float d0 = (float) (position.x + Math.cos(angle * Math.PI / 180.0D) * distance);
float d1 = (float) (position.z + Math.sin(angle * Math.PI / 180.0D) * distance);
return new Coord2D(d0,d1);
}
/**
* Used to get a completely(-1.0D - 1.0D) random double.
* @version From DummyCore 1.0
* @param rand - the Random, that will randomise this.
* @return a random Double
*/
public static double randomDouble(Random rand)
{
return rand.nextDouble()-rand.nextDouble();
}
/**
* Used to get a completely(-1.0F - 1.0F) random float.
* @version From DummyCore 1.0
* @param rand - the Random, that will randomise this.
* @return a random Float
*/
public static float randomFloat(Random rand)
{
return rand.nextFloat()-rand.nextFloat();
}
/**
* Used to calculate difference between 2 float.
* @version From DummyCore 1.0
* @param pos1 - float #1
* @param pos2 - float #2
* @return always positive value of difference.
*/
public static float getDifference(float pos1, float pos2)
{
float diff = pos1-pos2;
return (float)module(diff);
}
/**
* Swaps 2 integers between eachother.
* @version From DummyCore 1.1
* @param a - first int to swap
* @param b - second int to swap
* @return int[2] with this 2 values swapped.
*/
@Deprecated
public static int[] swap(int a, int b)
{
return new int[]{b,a};
}
/**
* Used to convert deciminal number to the Hexadeciminal.
* @version From DummyCore 1.1
* @param a - the int to be converted
* @return this integer, converted into hexadeciminal
*/
public static int convertToHex(int a)
{
return Integer.parseInt(Integer.toString(a),16);
}
/**
* Used to get the always positive value of a double.
* @version From DummyCore 1.2
* @param a - the double to be converted
* @return this double, but positive(>0)
*/
public static double module(double a)
{
if(a < 0) a = -a;
return a;
}
public static boolean arrayContains(Object[] array, Object searched)
{
for(int i = 0; i < array.length; ++i)
{
if(array[i].equals(searched))
return true;
}
return false;
}
public static boolean arrayContains(int[] array, int searched)
{
for(int i = 0; i < array.length; ++i)
{
if(array[i] == searched)
return true;
}
return false;
}
public static int getIntInArray(int[] array, int searched)
{
for(int i = 0; i < array.length; ++i)
{
if(array[i] == searched)
return i;
}
return -1;
}
public static boolean isArrayTheSame(boolean[] array)
{
boolean previous = array[0];
for(int i = 0; i < array.length; ++i)
{
if(array[i] == previous)
{
previous = array[i];
}else
{
return false;
}
}
return true;
}
}
package DummyCore.Utils;
import java.util.Random;
/**
*
* @author Modbder
* @version From DummyCore 1.0
* @Description can be used to save you some time writing mathematical functions.
*
*/
public class MathUtils {
/**
* Used to get the size of a texture in pixels using current values. Very useful in any kind of progress bars in GUI
* @version From DummyCore 1.0
* @param current - the current value
* @param max - the maximum value
* @param textureSize - the maximum texture size
* @return Percentage-based int. For example, if the textureSize is 50, current is 100 and max is 200 this will return 25 - that is 50% of your texture size.
*/
public static int pixelatedTextureSize(int current, int max, int textureSize)
{
if(current > max)
current = max;
float m = (float)current/max*100;
float n = m/100*textureSize;
return (int)n;
}
/**
* Used to get the persentage between 2 numbers
* @version From DummyCore 1.0
* @param current - the current value
* @param max - the maximum value
* @return Percentage-based int. For example, if current is 100 and max is 200 this will return 50.
*/
public static int getPercentage(int current, int max)
{
float m = (float)current/max*100;
return (int)m;
}
/**
* Used to get the polar-based offset between 2 points in vec2D coord system.
* @version From DummyCore 1.0
* @param position - the current vec2D
* @param angle - the angle of offset
* @param distance - the distance the point will be offset
* @return new Coord2D with offset coords.
*/
public static Coord2D polarOffset(Coord2D position, float angle, float distance)
{
float d0 = (float) (position.x + Math.cos(angle * Math.PI / 180.0D) * distance);
float d1 = (float) (position.z + Math.sin(angle * Math.PI / 180.0D) * distance);
return new Coord2D(d0,d1);
}
/**
* Used to get a completely(-1.0D - 1.0D) random double.
* @version From DummyCore 1.0
* @param rand - the Random, that will randomise this.
* @return a random Double
*/
public static double randomDouble(Random rand)
{
return rand.nextDouble()-rand.nextDouble();
}
/**
* Used to get a completely(-1.0F - 1.0F) random float.
* @version From DummyCore 1.0
* @param rand - the Random, that will randomise this.
* @return a random Float
*/
public static float randomFloat(Random rand)
{
return rand.nextFloat()-rand.nextFloat();
}
/**
* Used to calculate difference between 2 float.
* @version From DummyCore 1.0
* @param pos1 - float #1
* @param pos2 - float #2
* @return always positive value of difference.
*/
public static float getDifference(float pos1, float pos2)
{
float diff = pos1-pos2;
return (float)module(diff);
}
/**
* Swaps 2 integers between eachother.
* @version From DummyCore 1.1
* @param a - first int to swap
* @param b - second int to swap
* @return int[2] with this 2 values swapped.
*/
@Deprecated
public static int[] swap(int a, int b)
{
return new int[]{b,a};
}
/**
* Used to convert deciminal number to the Hexadeciminal.
* @version From DummyCore 1.1
* @param a - the int to be converted
* @return this integer, converted into hexadeciminal
*/
public static int convertToHex(int a)
{
return Integer.parseInt(Integer.toString(a),16);
}
/**
* Used to get the always positive value of a double.
* @version From DummyCore 1.2
* @param a - the double to be converted
* @return this double, but positive(>0)
*/
public static double module(double a)
{
if(a < 0) a = -a;
return a;
}
public static boolean arrayContains(Object[] array, Object searched)
{
for(int i = 0; i < array.length; ++i)
{
if(array[i].equals(searched))
return true;
}
return false;
}
public static boolean arrayContains(int[] array, int searched)
{
for(int i = 0; i < array.length; ++i)
{
if(array[i] == searched)
return true;
}
return false;
}
public static int getIntInArray(int[] array, int searched)
{
for(int i = 0; i < array.length; ++i)
{
if(array[i] == searched)
return i;
}
return -1;
}
public static boolean isArrayTheSame(boolean[] array)
{
boolean previous = array[0];
for(int i = 0; i < array.length; ++i)
{
if(array[i] == previous)
{
previous = array[i];
}else
{
return false;
}
}
return true;
}
}
Regular → Executable
+1439 -1454
View File
File diff suppressed because it is too large. Load diff
+148 -149
View File
@@ -1,149 +1,148 @@
package DummyCore.Utils;
import java.lang.reflect.Constructor;
import java.util.Hashtable;
import java.util.Random;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import DummyCore.Client.GuiMainMenuOld;
import DummyCore.Client.GuiMainMenuVanilla;
import DummyCore.Client.MainMenuRegistry;
import DummyCore.Core.CoreInitialiser;
import DummyCore.CreativeTabs.CreativePageBlocks;
import DummyCore.CreativeTabs.CreativePageItems;
import net.minecraft.client.Minecraft;
import net.minecraft.client.network.NetHandlerPlayClient;
import net.minecraft.client.renderer.EntityRenderer;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.client.shader.ShaderGroup;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack;
import net.minecraft.network.INetHandler;
import net.minecraft.network.NetHandlerPlayServer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
public class NetProxy_Client extends NetProxy_Server{
public static final Hashtable<String, ShaderGroup> shaders = new Hashtable();
@Override
public EntityPlayer getPlayerOnSide(INetHandler handler)
{
if(handler instanceof NetHandlerPlayClient)
{
return Minecraft.getMinecraft().thePlayer;
}
return null;
}
@Override
public void registerInfo()
{
MainMenuRegistry.registerNewGui(GuiMainMenuVanilla.class,"[DC] Vanilla","Just a simple vanilla MC gui.");
MainMenuRegistry.registerNewGui(GuiMainMenuOld.class,"[DC] Old Vanilla","An old MC gui.");
}
@Override
public void registerInit()
{
if(CoreInitialiser.cfg.removeMissingTexturesErrors)
{
Logger logger = LogManager.getLogger(TextureMap.class);
org.apache.logging.log4j.core.Logger log = (org.apache.logging.log4j.core.Logger) logger;
log.setLevel(Level.OFF);
}
}
@Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world,
int x, int y, int z) {
try
{
Class guiClass = Class.forName(GuiContainerLibrary.guis.get(ID));
Constructor constrctr_gui = guiClass.getConstructor(Container.class, TileEntity.class);
Class containerClass = Class.forName(GuiContainerLibrary.containers.get(ID));
Constructor constrctr = containerClass.getConstructor(InventoryPlayer.class, TileEntity.class);
Object obj = constrctr.newInstance(player.inventory,world.getTileEntity(x, y, z));
return constrctr_gui.newInstance(obj,world.getTileEntity(x, y, z));
}catch(Exception e)
{
Notifier.notifySimple("Unable to open GUI for ID "+ID);
e.printStackTrace();
return null;
}
}
@Override
public void initShaders(ResourceLocation rLoc)
{
Minecraft mc = Minecraft.getMinecraft();
EntityRenderer er = mc.entityRenderer;
try
{
if(rLoc == null)
{
er.deactivateShader();
}else
{
er.theShaderGroup = new ShaderGroup(mc.getTextureManager(), mc.getResourceManager(), mc.getFramebuffer(), rLoc);
er.theShaderGroup.createBindFramebuffers(mc.displayWidth, mc.displayHeight);
}
}catch(Exception e)
{
return;
}
}
@Override
public void choseDisplayStack(CreativePageBlocks blocks)
{
World w = Minecraft.getMinecraft().theWorld;
if(w.isRemote && w.getWorldTime() % 60 == 0)
{
blocks.delayTime = 0;
blocks.blockList = blocks.initialiseBlocksList();
if(blocks.blockList != null && !blocks.blockList.isEmpty())
{
Random rand;
if(DummyConfig.shouldChangeImage)
rand = new Random(w.getWorldTime());
else
rand = new Random(0);
int random = rand.nextInt(blocks.blockList.size());
ItemStack itm = blocks.blockList.get(random);
if(itm != null && itm.getItem() != null)
blocks.displayStack = itm;
}
}
}
@Override
public void choseDisplayStack(CreativePageItems items)
{
World w = Minecraft.getMinecraft().theWorld;
if(w.isRemote && w.getWorldTime() % 60 == 0)
{
items.delayTime = 0;
items.itemList = items.initialiseItemsList();
if(items.itemList != null && !items.itemList.isEmpty())
{
Random rand;
if(DummyConfig.shouldChangeImage)
rand = new Random(w.getWorldTime());
else
rand = new Random(0);
int random = rand.nextInt(items.itemList.size());
ItemStack itm = items.itemList.get(random);
if(itm != null && itm.getItem() != null)
items.displayStack = itm;
}
}
}
}
package DummyCore.Utils;
import java.lang.reflect.Constructor;
import java.util.Hashtable;
import java.util.Random;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import DummyCore.Client.GuiMainMenuOld;
import DummyCore.Client.GuiMainMenuVanilla;
import DummyCore.Client.MainMenuRegistry;
import DummyCore.Core.CoreInitialiser;
import DummyCore.CreativeTabs.CreativePageBlocks;
import DummyCore.CreativeTabs.CreativePageItems;
import net.minecraft.client.Minecraft;
import net.minecraft.client.network.NetHandlerPlayClient;
import net.minecraft.client.renderer.EntityRenderer;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.client.shader.ShaderGroup;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack;
import net.minecraft.network.INetHandler;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
public class NetProxy_Client extends NetProxy_Server{
public static final Hashtable<String, ShaderGroup> shaders = new Hashtable<String, ShaderGroup>();
@Override
public EntityPlayer getPlayerOnSide(INetHandler handler)
{
if(handler instanceof NetHandlerPlayClient)
{
return Minecraft.getMinecraft().thePlayer;
}
return null;
}
@Override
public void registerInfo()
{
MainMenuRegistry.registerNewGui(GuiMainMenuVanilla.class,"[DC] Vanilla","Just a simple vanilla MC gui.");
MainMenuRegistry.registerNewGui(GuiMainMenuOld.class,"[DC] Old Vanilla","An old MC gui.");
}
@Override
public void registerInit()
{
if(CoreInitialiser.cfg.removeMissingTexturesErrors)
{
Logger logger = LogManager.getLogger(TextureMap.class);
org.apache.logging.log4j.core.Logger log = (org.apache.logging.log4j.core.Logger) logger;
log.setLevel(Level.OFF);
}
}
@Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world,
int x, int y, int z) {
try
{
Class<?> guiClass = Class.forName(GuiContainerLibrary.guis.get(ID));
Constructor<?> constrctr_gui = guiClass.getConstructor(Container.class, TileEntity.class);
Class<?> containerClass = Class.forName(GuiContainerLibrary.containers.get(ID));
Constructor<?> constrctr = containerClass.getConstructor(InventoryPlayer.class, TileEntity.class);
Object obj = constrctr.newInstance(player.inventory,world.getTileEntity(x, y, z));
return constrctr_gui.newInstance(obj,world.getTileEntity(x, y, z));
}catch(Exception e)
{
Notifier.notifySimple("Unable to open GUI for ID "+ID);
e.printStackTrace();
return null;
}
}
@Override
public void initShaders(ResourceLocation rLoc)
{
Minecraft mc = Minecraft.getMinecraft();
EntityRenderer er = mc.entityRenderer;
try
{
if(rLoc == null)
{
er.deactivateShader();
}else
{
er.theShaderGroup = new ShaderGroup(mc.getTextureManager(), mc.getResourceManager(), mc.getFramebuffer(), rLoc);
er.theShaderGroup.createBindFramebuffers(mc.displayWidth, mc.displayHeight);
}
}catch(Exception e)
{
return;
}
}
@Override
public void choseDisplayStack(CreativePageBlocks blocks)
{
World w = Minecraft.getMinecraft().theWorld;
if(w.isRemote && w.getWorldTime() % 60 == 0)
{
blocks.delayTime = 0;
blocks.blockList = blocks.initialiseBlocksList();
if(blocks.blockList != null && !blocks.blockList.isEmpty())
{
Random rand;
if(DummyConfig.shouldChangeImage)
rand = new Random(w.getWorldTime());
else
rand = new Random(0);
int random = rand.nextInt(blocks.blockList.size());
ItemStack itm = blocks.blockList.get(random);
if(itm != null && itm.getItem() != null)
blocks.displayStack = itm;
}
}
}
@Override
public void choseDisplayStack(CreativePageItems items)
{
World w = Minecraft.getMinecraft().theWorld;
if(w.isRemote && w.getWorldTime() % 60 == 0)
{
items.delayTime = 0;
items.itemList = items.initialiseItemsList();
if(items.itemList != null && !items.itemList.isEmpty())
{
Random rand;
if(DummyConfig.shouldChangeImage)
rand = new Random(w.getWorldTime());
else
rand = new Random(0);
int random = rand.nextInt(items.itemList.size());
ItemStack itm = items.itemList.get(random);
if(itm != null && itm.getItem() != null)
items.displayStack = itm;
}
}
}
}
+75 -75
View File
@@ -1,75 +1,75 @@
package DummyCore.Utils;
import java.lang.reflect.Constructor;
import DummyCore.CreativeTabs.CreativePageBlocks;
import DummyCore.CreativeTabs.CreativePageItems;
import cpw.mods.fml.common.network.IGuiHandler;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.network.INetHandler;
import net.minecraft.network.NetHandlerPlayServer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
public class NetProxy_Server implements IGuiHandler{
public EntityPlayer getPlayerOnSide(INetHandler handler)
{
if(handler instanceof NetHandlerPlayServer)
{
return ((NetHandlerPlayServer)handler).playerEntity;
}
return null;
}
public void registerInfo()
{
}
public void registerInit()
{
}
@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world,int x, int y, int z) {
try
{
Class containerClass = Class.forName(GuiContainerLibrary.containers.get(ID));
Constructor constrctr = containerClass.getConstructor(InventoryPlayer.class, TileEntity.class);
return constrctr.newInstance(player.inventory,world.getTileEntity(x, y, z));
}catch(Exception e)
{
Notifier.notifySimple("Unable to open Container for ID "+ID);
e.printStackTrace();
return null;
}
}
@Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world,
int x, int y, int z) {
return null;
}
public void initShaders(ResourceLocation rLoc)
{
}
public void choseDisplayStack(CreativePageBlocks blocks)
{
}
public void choseDisplayStack(CreativePageItems items)
{
}
}
package DummyCore.Utils;
import java.lang.reflect.Constructor;
import DummyCore.CreativeTabs.CreativePageBlocks;
import DummyCore.CreativeTabs.CreativePageItems;
import cpw.mods.fml.common.network.IGuiHandler;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.network.INetHandler;
import net.minecraft.network.NetHandlerPlayServer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
public class NetProxy_Server implements IGuiHandler{
public EntityPlayer getPlayerOnSide(INetHandler handler)
{
if(handler instanceof NetHandlerPlayServer)
{
return ((NetHandlerPlayServer)handler).playerEntity;
}
return null;
}
public void registerInfo()
{
}
public void registerInit()
{
}
@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world,int x, int y, int z) {
try
{
Class<?> containerClass = Class.forName(GuiContainerLibrary.containers.get(ID));
Constructor<?> constrctr = containerClass.getConstructor(InventoryPlayer.class, TileEntity.class);
return constrctr.newInstance(player.inventory,world.getTileEntity(x, y, z));
}catch(Exception e)
{
Notifier.notifySimple("Unable to open Container for ID "+ID);
e.printStackTrace();
return null;
}
}
@Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world,
int x, int y, int z) {
return null;
}
public void initShaders(ResourceLocation rLoc)
{
}
public void choseDisplayStack(CreativePageBlocks blocks)
{
}
public void choseDisplayStack(CreativePageItems items)
{
}
}
Regular → Executable
+87 -94
View File
@@ -1,94 +1,87 @@
package DummyCore.Utils;
import java.io.PrintStream;
import java.util.concurrent.CopyOnWriteArrayList;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import net.minecraft.client.Minecraft;
public class Notifier {
//======================================String Beginning Indexes===============================================//
private static String info = "[INFO]";
private static String warning = "[WARNING]";
private static String error = "[ERROR]";
private static String severe = "[SEVERE]";
//======================================String Second Indexes===============================================//
private static String dev = "[DEV]";
private static String debug = "[DEBUG]";
private static String stdout = "[STDOUT]";
//======================================String Ending Indexes===============================================//
private static String system = "[SYSTEM]";
private static String mod = "[DummyCore]";
private static StringBuilder builder = new StringBuilder();
public static final Logger logger = LogManager.getLogger();
public static void notify(String... s)
{
String begin = "";
String mid = "";
String end = "";
String mesg = s[3];
mid = s[1];
end = s[2];
String out = buildString(begin,mid,end,mesg);
publish(out);
}
public static void notifyDev(String s)
{
notify("",dev,mod,s);
}
public static void notifyDevCustomMod(String modname, String s)
{
modname = "["+modname+"]";
notify("",dev,modname,s);
}
public static void notifyDebugCustomMod(String modname, String s)
{
modname = "["+modname+"]";
notify("",debug,modname,s);
}
public static void notifyDebug(String s)
{
notify("",debug,mod,s);
}
public static void notifySystem(String s)
{
notify("","",system,s);
}
public static void notifySimple(String s)
{
notify("","",mod,s);
}
public static void notifyCustomMod(String modname,String s)
{
modname = "["+modname+"]";
notify("","",modname,s);
}
public static String buildString(String...strings)
{
return strings[0] + " " + strings[1] + " " + strings[2] + " " + strings[3] + " ";
}
public static void publish(String s)
{
org.apache.logging.log4j.core.Logger log = (org.apache.logging.log4j.core.Logger) logger;
log.setLevel(Level.INFO);
if(DummyConfig.enableNotifierLogging)
logger.log(Level.INFO, s);
}
}
package DummyCore.Utils;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Notifier {
//======================================String Beginning Indexes===============================================//
public static final String info = "[INFO]";
public static final String warning = "[WARNING]";
public static final String error = "[ERROR]";
public static final String severe = "[SEVERE]";
//======================================String Second Indexes===============================================//
public static final String dev = "[DEV]";
public static final String debug = "[DEBUG]";
public static final String stdout = "[STDOUT]";
//======================================String Ending Indexes===============================================//
public static final String system = "[SYSTEM]";
public static final String mod = "[DummyCore]";
public static final Logger logger = LogManager.getLogger();
public static void notify(String... s)
{
String begin = "";
String mid = "";
String end = "";
String mesg = s[3];
mid = s[1];
end = s[2];
String out = buildString(begin,mid,end,mesg);
publish(out);
}
public static void notifyDev(String s)
{
notify("",dev,mod,s);
}
public static void notifyDevCustomMod(String modname, String s)
{
modname = "["+modname+"]";
notify("",dev,modname,s);
}
public static void notifyDebugCustomMod(String modname, String s)
{
modname = "["+modname+"]";
notify("",debug,modname,s);
}
public static void notifyDebug(String s)
{
notify("",debug,mod,s);
}
public static void notifySystem(String s)
{
notify("","",system,s);
}
public static void notifySimple(String s)
{
notify("","",mod,s);
}
public static void notifyCustomMod(String modname,String s)
{
modname = "["+modname+"]";
notify("","",modname,s);
}
public static String buildString(String...strings)
{
return strings[0] + " " + strings[1] + " " + strings[2] + " " + strings[3] + " ";
}
public static void publish(String s)
{
org.apache.logging.log4j.core.Logger log = (org.apache.logging.log4j.core.Logger) logger;
log.setLevel(Level.INFO);
if(DummyConfig.enableNotifierLogging)
logger.log(Level.INFO, s);
}
}
Regular → Executable
+71 -73
View File
@@ -1,73 +1,71 @@
package DummyCore.Utils;
import java.util.ArrayList;
import java.util.List;
import DummyCore.Core.CoreInitialiser;
public class SyncUtils {
public static List<String> needsSyncing_Global = new ArrayList();
public static List<String> needsSyncing_Player = new ArrayList();
public static void addRequiresSync(String playerName, String modid, String dataName)
{
String mainSyncString = playerName+"|"+modid+":"+dataName;
if(!needsSyncing_Player.contains(mainSyncString))
needsSyncing_Player.add(mainSyncString);
}
public static void addRequiresSync(String modid, String dataName)
{
String mainSyncString = modid+":"+dataName;
if(!needsSyncing_Global.contains(mainSyncString))
needsSyncing_Global.add(mainSyncString);
}
public static void makeSync_LotsSmallPackets()
{
for(int i = 0; i < needsSyncing_Global.size(); ++i)
{
String syncID = needsSyncing_Global.get(i);
int indexOfStrip = syncID.indexOf(":");
if(indexOfStrip != -1)
{
String modid = syncID.substring(0,indexOfStrip);
String dataName = syncID.substring(indexOfStrip+1);
if(MiscUtils.registeredServerWorldData.containsKey(modid+"|"+dataName))
{
String dataString = "||mod:DummyCore.InfoSync"+"||"+modid+":"+dataName+"||ddata:"+MiscUtils.registeredServerWorldData.get(modid+"|"+dataName);
DummyPacketIMSG simplePacket = new DummyPacketIMSG(dataString);
CoreInitialiser.packetHandler.sendToAll(simplePacket);
}else
{
Notifier.notifyCustomMod(modid, "The sync packet for data "+modid+"|"+dataName+" could not be generated - the requested server data does not exist!");
}
}
}
for(int i = 0; i < needsSyncing_Player.size(); ++i)
{
String syncID = needsSyncing_Player.get(i);
int indexOfStrip = syncID.indexOf(":");
int indexOfPlayer = syncID.indexOf("|");
if(indexOfPlayer != -1 && indexOfStrip != -1)
{
String playerName = syncID.substring(0, indexOfPlayer);
String modid = syncID.substring(indexOfPlayer+1,indexOfStrip);
String dataName = syncID.substring(indexOfStrip+1);
if(MiscUtils.registeredServerData.containsKey(playerName+"_"+modid+"|"+dataName))
{
String dataString = "||mod:DummyCore.PlayerInfoSync"+"||"+"playerName:"+playerName+"||"+modid+ ":" + dataName+"||ddata:"+MiscUtils.registeredServerData.get(playerName+"_"+modid+"|"+dataName);
DummyPacketIMSG simplePacket = new DummyPacketIMSG(dataString);
CoreInitialiser.packetHandler.sendToAll(simplePacket);
}else
{
Notifier.notifyCustomMod(modid, "The sync packet for data "+playerName+"_"+modid+ "could not be generated - the requested server data does not exist!");
}
}
}
needsSyncing_Global.clear();
needsSyncing_Player.clear();
}
}
package DummyCore.Utils;
import java.util.ArrayList;
import java.util.List;
public class SyncUtils {
public static List<String> needsSyncing_Global = new ArrayList<String>();
public static List<String> needsSyncing_Player = new ArrayList<String>();
public static void addRequiresSync(String playerName, String modid, String dataName)
{
String mainSyncString = playerName+"|"+modid+":"+dataName;
if(!needsSyncing_Player.contains(mainSyncString))
needsSyncing_Player.add(mainSyncString);
}
public static void addRequiresSync(String modid, String dataName)
{
String mainSyncString = modid+":"+dataName;
if(!needsSyncing_Global.contains(mainSyncString))
needsSyncing_Global.add(mainSyncString);
}
public static void makeSync_LotsSmallPackets()
{
for(int i = 0; i < needsSyncing_Global.size(); ++i)
{
String syncID = needsSyncing_Global.get(i);
int indexOfStrip = syncID.indexOf(":");
if(indexOfStrip != -1)
{
String modid = syncID.substring(0,indexOfStrip);
String dataName = syncID.substring(indexOfStrip+1);
if(MiscUtils.registeredServerWorldData.containsKey(modid+"|"+dataName))
{
String dataString = "||mod:DummyCore.InfoSync"+"||"+modid+":"+dataName+"||ddata:"+MiscUtils.registeredServerWorldData.get(modid+"|"+dataName);
DummyPacketIMSG simplePacket = new DummyPacketIMSG(dataString);
DummyPacketHandler.sendToAll(simplePacket);
}else
{
Notifier.notifyCustomMod(modid, "The sync packet for data "+modid+"|"+dataName+" could not be generated - the requested server data does not exist!");
}
}
}
for(int i = 0; i < needsSyncing_Player.size(); ++i)
{
String syncID = needsSyncing_Player.get(i);
int indexOfStrip = syncID.indexOf(":");
int indexOfPlayer = syncID.indexOf("|");
if(indexOfPlayer != -1 && indexOfStrip != -1)
{
String playerName = syncID.substring(0, indexOfPlayer);
String modid = syncID.substring(indexOfPlayer+1,indexOfStrip);
String dataName = syncID.substring(indexOfStrip+1);
if(MiscUtils.registeredServerData.containsKey(playerName+"_"+modid+"|"+dataName))
{
String dataString = "||mod:DummyCore.PlayerInfoSync"+"||"+"playerName:"+playerName+"||"+modid+ ":" + dataName+"||ddata:"+MiscUtils.registeredServerData.get(playerName+"_"+modid+"|"+dataName);
DummyPacketIMSG simplePacket = new DummyPacketIMSG(dataString);
DummyPacketHandler.sendToAll(simplePacket);
}else
{
Notifier.notifyCustomMod(modid, "The sync packet for data "+playerName+"_"+modid+ "could not be generated - the requested server data does not exist!");
}
}
}
needsSyncing_Global.clear();
needsSyncing_Player.clear();
}
}
+40
View File
@@ -0,0 +1,40 @@
package DummyCore.Utils;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
public class TileStatTracker
{
public TileEntity trackedTile;
public NBTTagCompound trackedTag;
public TileStatTracker(TileEntity tracked)
{
trackedTile = tracked;
}
public boolean tileNeedsSyncing()
{
if(trackedTile == null) return false;
NBTTagCompound currentTag = new NBTTagCompound();
if(trackedTag == null)
{
trackedTag = new NBTTagCompound();
trackedTile.writeToNBT(trackedTag);
return true;
}else
{
trackedTile.writeToNBT(currentTag);
if(currentTag.equals(trackedTag))
{
trackedTile.writeToNBT(trackedTag);
return false;
}else
{
trackedTile.writeToNBT(trackedTag);
return true;
}
}
}
}
+155 -154
View File
@@ -1,154 +1,155 @@
package DummyCore.Utils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraftforge.oredict.OreDictionary;
/**
*
* @author Modbder
*
* @Description Used in code where you want to reference either ItemStack or it's OreDictionary replacement.
*/
public class UnformedItemStack {
public List<ItemStack> possibleStacks = new ArrayList<ItemStack>();
public UnformedItemStack()
{
}
public UnformedItemStack(ItemStack is)
{
possibleStacks.add(is);
sort();
}
public UnformedItemStack(String oreDictName)
{
possibleStacks.addAll(OreDictionary.getOres(oreDictName));
sort();
}
public UnformedItemStack(List<ItemStack> lst)
{
possibleStacks.addAll(lst);
sort();
}
public UnformedItemStack(ItemStack[] stk)
{
possibleStacks.addAll(Arrays.asList(stk));
sort();
}
public UnformedItemStack(Block b)
{
possibleStacks.add(new ItemStack(b,1,OreDictionary.WILDCARD_VALUE));
sort();
}
public UnformedItemStack(Item i)
{
possibleStacks.add(new ItemStack(i,1,OreDictionary.WILDCARD_VALUE));
sort();
}
public UnformedItemStack(Object obj)
{
if(obj instanceof ItemStack)
possibleStacks.add((ItemStack)obj);
if(obj instanceof String)
possibleStacks.addAll(OreDictionary.getOres((String)obj));
if(obj instanceof List<?>)
possibleStacks.addAll((List<ItemStack>)obj);
if(obj instanceof ItemStack[])
possibleStacks.addAll(Arrays.asList((ItemStack[])obj));
if(obj instanceof Block)
possibleStacks.add(new ItemStack((Block)obj,1,OreDictionary.WILDCARD_VALUE));
if(obj instanceof Item)
possibleStacks.add(new ItemStack((Item)obj,1,OreDictionary.WILDCARD_VALUE));
sort();
}
public boolean itemStackMatches(ItemStack is)
{
if(is == null)
return false;
for(ItemStack s : possibleStacks)
{
if(is.isItemEqual(s) || (is.getItem().equals(s.getItem()) && s.getItemDamage() == OreDictionary.WILDCARD_VALUE))
return true;
}
return false;
}
public String toString()
{
String str = "";
for(ItemStack s : possibleStacks)str += s;
return str;
}
public UnformedItemStack copy()
{
return new UnformedItemStack(this.possibleStacks);
}
public void nullify()
{
for(ItemStack s : possibleStacks)s.stackSize = 0;
}
public void sort()
{
List<ItemStack> possibleStacksCopy = new ArrayList();
possibleStacksCopy.addAll(possibleStacks);
possibleStacks.clear();
for(int i = 0; i < possibleStacksCopy.size();++i)
{
ItemStack is = possibleStacksCopy.get(i);
if(is != null)possibleStacks.add(is);
}
possibleStacksCopy.clear();possibleStacksCopy = null;
}
public ItemStack getISToDraw(long time)
{
int size = this.possibleStacks.size();
if(size <= 0)return null;
return this.possibleStacks.get((int)(((int)(time/30))%size));
}
public void writeToNBTTagCompound(NBTTagCompound tag)
{
NBTTagList items = new NBTTagList();
for(ItemStack is : this.possibleStacks)
{
NBTTagCompound itemTag = new NBTTagCompound();
is.writeToNBT(itemTag);
items.appendTag(itemTag);
}
tag.setTag("unformedISList", items);
}
public void readFromNBTTagCompound(NBTTagCompound tag)
{
NBTTagList items = tag.getTagList("unformedISList", 10);
for(int i = 0; i < items.tagCount(); ++i)
{
NBTTagCompound itemTag = items.getCompoundTagAt(i);
ItemStack is = ItemStack.loadItemStackFromNBT(itemTag);
this.possibleStacks.add(is);
}
this.sort();
}
}
package DummyCore.Utils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraftforge.oredict.OreDictionary;
/**
*
* @author Modbder
*
* @Description Used in code where you want to reference either ItemStack or it's OreDictionary replacement.
*/
public class UnformedItemStack {
public List<ItemStack> possibleStacks = new ArrayList<ItemStack>();
public UnformedItemStack()
{
}
public UnformedItemStack(ItemStack is)
{
possibleStacks.add(is);
sort();
}
public UnformedItemStack(String oreDictName)
{
possibleStacks.addAll(OreDictionary.getOres(oreDictName));
sort();
}
public UnformedItemStack(List<ItemStack> lst)
{
possibleStacks.addAll(lst);
sort();
}
public UnformedItemStack(ItemStack[] stk)
{
possibleStacks.addAll(Arrays.asList(stk));
sort();
}
public UnformedItemStack(Block b)
{
possibleStacks.add(new ItemStack(b,1,OreDictionary.WILDCARD_VALUE));
sort();
}
public UnformedItemStack(Item i)
{
possibleStacks.add(new ItemStack(i,1,OreDictionary.WILDCARD_VALUE));
sort();
}
@SuppressWarnings("unchecked")
public UnformedItemStack(Object obj)
{
if(obj instanceof ItemStack)
possibleStacks.add((ItemStack)obj);
if(obj instanceof String)
possibleStacks.addAll(OreDictionary.getOres((String)obj));
if(obj instanceof List<?>)
possibleStacks.addAll((List<ItemStack>)obj);
if(obj instanceof ItemStack[])
possibleStacks.addAll(Arrays.asList((ItemStack[])obj));
if(obj instanceof Block)
possibleStacks.add(new ItemStack((Block)obj,1,OreDictionary.WILDCARD_VALUE));
if(obj instanceof Item)
possibleStacks.add(new ItemStack((Item)obj,1,OreDictionary.WILDCARD_VALUE));
sort();
}
public boolean itemStackMatches(ItemStack is)
{
if(is == null)
return false;
for(ItemStack s : possibleStacks)
{
if(is.isItemEqual(s) || (is.getItem().equals(s.getItem()) && s.getItemDamage() == OreDictionary.WILDCARD_VALUE))
return true;
}
return false;
}
public String toString()
{
String str = "";
for(ItemStack s : possibleStacks)str += s;
return str;
}
public UnformedItemStack copy()
{
return new UnformedItemStack(this.possibleStacks);
}
public void nullify()
{
for(ItemStack s : possibleStacks)s.stackSize = 0;
}
public void sort()
{
List<ItemStack> possibleStacksCopy = new ArrayList<ItemStack>();
possibleStacksCopy.addAll(possibleStacks);
possibleStacks.clear();
for(int i = 0; i < possibleStacksCopy.size();++i)
{
ItemStack is = possibleStacksCopy.get(i);
if(is != null)possibleStacks.add(is);
}
possibleStacksCopy.clear();possibleStacksCopy = null;
}
public ItemStack getISToDraw(long time)
{
int size = this.possibleStacks.size();
if(size <= 0)return null;
return this.possibleStacks.get((int)(((int)(time/30))%size));
}
public void writeToNBTTagCompound(NBTTagCompound tag)
{
NBTTagList items = new NBTTagList();
for(ItemStack is : this.possibleStacks)
{
NBTTagCompound itemTag = new NBTTagCompound();
is.writeToNBT(itemTag);
items.appendTag(itemTag);
}
tag.setTag("unformedISList", items);
}
public void readFromNBTTagCompound(NBTTagCompound tag)
{
NBTTagList items = tag.getTagList("unformedISList", 10);
for(int i = 0; i < items.tagCount(); ++i)
{
NBTTagCompound itemTag = items.getCompoundTagAt(i);
ItemStack is = ItemStack.loadItemStackFromNBT(itemTag);
this.possibleStacks.add(is);
}
this.sort();
}
}
Regular → Executable
View File
File mode changed.