mirror of
https://github.com/GTNewHorizons/Hardcore-Ender-Expansion.git
synced 2026-10-25 20:22:31 +00:00
Compendium events, orb debug tweak, update Forge
This commit is contained in:
1 parent
4e8c249b4e
commit
4cf6a36a01
6 files changed
+129
-69
No files matched your search
+1
-1
@@ -25,7 +25,7 @@ sourceCompatibility = 1.7
|
||||
targetCompatibility = 1.7
|
||||
|
||||
minecraft {
|
||||
version = "1.7.10-10.13.0.1199"
|
||||
version = "1.7.10-10.13.0.1208"
|
||||
assetDir = "eclipse/assets"
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ public abstract class KnowledgeFragment{
|
||||
private int price = 10;
|
||||
private boolean unlockOnDiscovery = false;
|
||||
private int[] unlockRequirements = ArrayUtils.EMPTY_INT_ARRAY;
|
||||
private int[] unlockCascade = ArrayUtils.EMPTY_INT_ARRAY;
|
||||
|
||||
public KnowledgeFragment(int globalID){
|
||||
this.globalID = globalID;
|
||||
@@ -60,6 +61,19 @@ public abstract class KnowledgeFragment{
|
||||
this.unlockRequirements = requirements;
|
||||
return this;
|
||||
}
|
||||
|
||||
public int[] getUnlockRequirements(){
|
||||
return unlockRequirements;
|
||||
}
|
||||
|
||||
public KnowledgeFragment setUnlockCascade(int...cascade){
|
||||
this.unlockCascade = cascade;
|
||||
return this;
|
||||
}
|
||||
|
||||
public int[] getUnlockCascade(){
|
||||
return unlockCascade;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public abstract int getHeight(Minecraft mc, boolean isUnlocked);
|
||||
|
||||
@@ -11,7 +11,7 @@ import com.google.common.collect.ImmutableSet;
|
||||
public class KnowledgeObject<T extends IKnowledgeObjectInstance> implements IGuiItemStackRenderer{
|
||||
private static int lastUsedID = 0;
|
||||
private static final int iconSize = 30;
|
||||
private static final TIntObjectHashMap<KnowledgeObject<?>> allObjects = new TIntObjectHashMap<>();
|
||||
private static final TIntObjectHashMap<KnowledgeObject<?>> allObjects = new TIntObjectHashMap<>(); // TODO add IKnowledgeObjectInstance -> Set<KnowledgeObject>
|
||||
|
||||
public static <T extends IKnowledgeObjectInstance<?>> KnowledgeObject<T> getObject(Object o){
|
||||
for(KnowledgeObject<?> knowledgeObject:allObjects.valueCollection()){
|
||||
|
||||
@@ -1,10 +1,16 @@
|
||||
package chylex.hee.mechanics.compendium.events;
|
||||
import gnu.trove.map.hash.TObjectByteHashMap;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.util.MovingObjectPosition.MovingObjectType;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.entity.EntityEvent;
|
||||
import chylex.hee.mechanics.compendium.content.objects.ObjectBlock;
|
||||
@@ -15,6 +21,7 @@ import chylex.hee.mechanics.compendium.content.type.KnowledgeObject;
|
||||
import chylex.hee.mechanics.compendium.player.PlayerCompendiumData;
|
||||
import chylex.hee.packets.PacketPipeline;
|
||||
import chylex.hee.packets.client.C19CompendiumData;
|
||||
import chylex.hee.system.util.MathUtil;
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import cpw.mods.fml.common.gameevent.PlayerEvent.ItemCraftedEvent;
|
||||
@@ -86,9 +93,19 @@ public final class CompendiumEvents{
|
||||
public void onPlayerTick(PlayerTickEvent e){
|
||||
if (e.phase != Phase.START || e.player.worldObj.isRemote)return;
|
||||
|
||||
if (playerTickLimiter.adjustOrPutValue(e.player.getGameProfile().getId(),byteOne,byteOne) >= 10){
|
||||
playerTickLimiter.put(e.player.getGameProfile().getId(),byteZero);
|
||||
EntityPlayer player = e.player;
|
||||
|
||||
if (playerTickLimiter.adjustOrPutValue(player.getGameProfile().getId(),byteOne,byteOne) >= 7){
|
||||
playerTickLimiter.put(player.getGameProfile().getId(),byteZero);
|
||||
|
||||
Vec3 posVec = Vec3.createVectorHelper(player.posX,player.boundingBox.minY+player.getEyeHeight()-(player.isSneaking() ? 0.08D : 0D),player.posZ);
|
||||
Vec3 lookVec = player.getLook(8F);
|
||||
|
||||
MovingObjectPosition mopBlock = player.worldObj.rayTraceBlocks(posVec,lookVec,true);
|
||||
double distBlock = mopBlock.typeOfHit == MovingObjectType.BLOCK ? MathUtil.distance(mopBlock.blockX+0.5D-posVec.xCoord,mopBlock.blockY+0.5D-posVec.yCoord,mopBlock.blockZ+0.5D-posVec.zCoord) : 8D;
|
||||
|
||||
double bbX = posVec.xCoord+lookVec.xCoord*0.5D, bbY = posVec.yCoord+lookVec.yCoord*0.5D, bbZ = posVec.zCoord+posVec.zCoord*0.5D;
|
||||
List<Entity> list = player.worldObj.getEntitiesWithinAABB(Entity.class,AxisAlignedBB.getBoundingBox(bbX-5D,bbY-5D,bbZ-5D,bbX+5D,bbY+5D,bbZ+5D));
|
||||
// TODO random events
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import chylex.hee.mechanics.compendium.content.type.KnowledgeFragment;
|
||||
import chylex.hee.mechanics.compendium.content.type.KnowledgeObject;
|
||||
import chylex.hee.mechanics.compendium.player.PlayerDiscoveryList.IObjectSerializer;
|
||||
import chylex.hee.system.logging.Stopwatch;
|
||||
import cpw.mods.fml.common.registry.GameData;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import cpw.mods.fml.common.registry.GameRegistry.UniqueIdentifier;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
@@ -52,54 +53,6 @@ public class PlayerCompendiumData implements IExtendedEntityProperties{
|
||||
pointAmount = Math.max(0,pointAmount-amount);
|
||||
}
|
||||
|
||||
public boolean tryDiscoverBlock(KnowledgeObject<ObjectBlock> block, boolean addReward){
|
||||
if (discoveredBlocks.addObject(block.getObject())){
|
||||
if (addReward){
|
||||
unlockDiscoveryFragments(block);
|
||||
pointAmount += block.getDiscoveryReward();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
|
||||
public boolean hasDiscoveredBlock(KnowledgeObject<ObjectBlock> block){
|
||||
return discoveredBlocks.hasDiscoveredObject(block.getObject());
|
||||
}
|
||||
|
||||
public boolean tryDiscoverItem(KnowledgeObject<ObjectItem> item, boolean addReward){
|
||||
if (discoveredItems.addObject(item.getObject())){
|
||||
if (addReward){
|
||||
unlockDiscoveryFragments(item);
|
||||
pointAmount += item.getDiscoveryReward();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
|
||||
public boolean hasDiscoveredItem(KnowledgeObject<ObjectItem> item){
|
||||
return discoveredItems.hasDiscoveredObject(item.getObject());
|
||||
}
|
||||
|
||||
public boolean tryDiscoverMob(KnowledgeObject<ObjectMob> mob, boolean addReward){
|
||||
if (discoveryMobs.addObject(mob.getObject())){
|
||||
if (addReward){
|
||||
unlockDiscoveryFragments(mob);
|
||||
pointAmount += mob.getDiscoveryReward();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
|
||||
public boolean hasDiscoveredMob(KnowledgeObject<ObjectMob> mob){
|
||||
return discoveryMobs.hasDiscoveredObject(mob.getObject());
|
||||
}
|
||||
|
||||
public boolean tryDiscoverObject(KnowledgeObject<?> object, boolean addReward){
|
||||
IKnowledgeObjectInstance<?> obj = object.getObject();
|
||||
|
||||
@@ -118,6 +71,49 @@ public class PlayerCompendiumData implements IExtendedEntityProperties{
|
||||
else return false;
|
||||
}
|
||||
|
||||
public boolean tryDiscoverBlock(KnowledgeObject<ObjectBlock> block, boolean addReward){
|
||||
if (discoveredBlocks.addObject(block.getObject())){
|
||||
onDiscover(block,addReward);
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
|
||||
public boolean hasDiscoveredBlock(KnowledgeObject<ObjectBlock> block){
|
||||
return discoveredBlocks.hasDiscoveredObject(block.getObject());
|
||||
}
|
||||
|
||||
public boolean tryDiscoverItem(KnowledgeObject<ObjectItem> item, boolean addReward){
|
||||
if (discoveredItems.addObject(item.getObject())){
|
||||
onDiscover(item,addReward);
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
|
||||
public boolean hasDiscoveredItem(KnowledgeObject<ObjectItem> item){
|
||||
return discoveredItems.hasDiscoveredObject(item.getObject());
|
||||
}
|
||||
|
||||
public boolean tryDiscoverMob(KnowledgeObject<ObjectMob> mob, boolean addReward){
|
||||
if (discoveryMobs.addObject(mob.getObject())){
|
||||
onDiscover(mob,addReward);
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
|
||||
public boolean hasDiscoveredMob(KnowledgeObject<ObjectMob> mob){
|
||||
return discoveryMobs.hasDiscoveredObject(mob.getObject());
|
||||
}
|
||||
|
||||
private void onDiscover(KnowledgeObject<?> object, boolean addReward){
|
||||
if (addReward){
|
||||
unlockDiscoveryFragments(object);
|
||||
pointAmount += object.getDiscoveryReward();
|
||||
}
|
||||
}
|
||||
|
||||
private void unlockDiscoveryFragments(KnowledgeObject<?> object){
|
||||
for(KnowledgeFragment fragment:object.getFragments()){
|
||||
if (fragment.isUnlockedOnDiscovery())unlockFragment(fragment);
|
||||
@@ -125,13 +121,28 @@ public class PlayerCompendiumData implements IExtendedEntityProperties{
|
||||
}
|
||||
|
||||
public boolean unlockFragment(KnowledgeFragment fragment){
|
||||
return unlockedFragments.add(fragment.globalID);
|
||||
if (unlockedFragments.add(fragment.globalID)){
|
||||
for(int cascade:fragment.getUnlockCascade())unlockFragment(KnowledgeFragment.getById(cascade));
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
|
||||
public boolean hasUnlockedFragment(KnowledgeFragment fragment){
|
||||
return unlockedFragments.contains(fragment.globalID);
|
||||
}
|
||||
|
||||
public FragmentPurchaseStatus canPurchaseFragment(KnowledgeFragment fragment){
|
||||
if (!fragment.isBuyable())return FragmentPurchaseStatus.NOT_BUYABLE;
|
||||
if (pointAmount < fragment.getPrice())return FragmentPurchaseStatus.NOT_ENOUGH_POINTS;
|
||||
|
||||
for(int requirement:fragment.getUnlockRequirements()){
|
||||
if (!unlockedFragments.contains(requirement))return FragmentPurchaseStatus.REQUIREMENTS_UNFULFILLED;
|
||||
}
|
||||
|
||||
return FragmentPurchaseStatus.CAN_PURCHASE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(Entity entity, World world){}
|
||||
|
||||
@@ -171,11 +182,11 @@ public class PlayerCompendiumData implements IExtendedEntityProperties{
|
||||
|
||||
@Override
|
||||
public BlockMetaWrapper deserialize(String data){
|
||||
int colonIndex = data.indexOf(":"), nextColonIndex = data.indexOf(":",colonIndex+1);
|
||||
String meta = data.substring(nextColonIndex+1);
|
||||
int secondColonIndex = data.indexOf(":",data.indexOf(":")+1);
|
||||
String meta = data.substring(secondColonIndex+1);
|
||||
|
||||
if (!meta.equals("-1") && !StringUtils.isNumeric(meta))return null;
|
||||
else return new BlockMetaWrapper(GameRegistry.findBlock(data.substring(0,colonIndex),data.substring(colonIndex+1,nextColonIndex)),Integer.parseInt(meta));
|
||||
else return new BlockMetaWrapper(GameData.getBlockRegistry().getObject(data.substring(0,secondColonIndex)),Integer.parseInt(meta));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,8 +199,7 @@ public class PlayerCompendiumData implements IExtendedEntityProperties{
|
||||
|
||||
@Override
|
||||
public Item deserialize(String data){
|
||||
int colonIndex = data.indexOf(":");
|
||||
return GameRegistry.findItem(data.substring(0,colonIndex),data.substring(colonIndex+1));
|
||||
return GameData.getItemRegistry().getObject(data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,4 +214,10 @@ public class PlayerCompendiumData implements IExtendedEntityProperties{
|
||||
return (Class<? extends EntityLivingBase>)EntityList.stringToClassMapping.get(data);
|
||||
}
|
||||
}
|
||||
|
||||
// ENUMS
|
||||
|
||||
public enum FragmentPurchaseStatus{
|
||||
CAN_PURCHASE, NOT_BUYABLE, NOT_ENOUGH_POINTS, REQUIREMENTS_UNFULFILLED
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package chylex.hee.mechanics.orb;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
@@ -22,6 +23,7 @@ import chylex.hee.item.ItemList;
|
||||
import chylex.hee.system.logging.Log;
|
||||
import chylex.hee.system.logging.Stopwatch;
|
||||
import chylex.hee.system.util.DragonUtil;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
|
||||
public final class OrbAcquirableItems{
|
||||
public static final WeightedItemList idList = new WeightedItemList();
|
||||
@@ -123,24 +125,35 @@ public final class OrbAcquirableItems{
|
||||
}
|
||||
|
||||
private static String toString(ItemStack is){
|
||||
if (is.getItem() == null)return "ERROR";
|
||||
else return is.toString();
|
||||
if (is == null)return "<supernull, wtf>";
|
||||
else if (is.getItem() == null)return "<null>";
|
||||
else return "["+GameRegistry.findUniqueIdentifierFor(is.getItem()).modId+"]"+(is.stackSize > 9 ? is.toString().substring(3).replace('@','/') : is.toString().substring(2)).replace('@','/');
|
||||
}
|
||||
|
||||
private static String toString(List list){
|
||||
try{
|
||||
return list.toString();
|
||||
}catch(Throwable t){
|
||||
return "ERROR";
|
||||
}
|
||||
return toString(list.toArray());
|
||||
}
|
||||
|
||||
private static String toString(Object[] array){
|
||||
try{
|
||||
return ArrayUtils.toString(array);
|
||||
}catch(Throwable t){
|
||||
return "ERROR";
|
||||
Object[] newArray = new Object[array.length];
|
||||
|
||||
for(int a = 0; a < array.length; a++){
|
||||
if (array[a] == null)newArray[a] = "<empty>";
|
||||
else if (array[a] instanceof ItemStack)newArray[a] = toString((ItemStack)array[a]);
|
||||
else if (array[a] instanceof Collection){
|
||||
Collection collection = (Collection)array[a];
|
||||
|
||||
if (collection.isEmpty())newArray[a] = "<collempty>";
|
||||
else{
|
||||
Object obj = collection.iterator().next();
|
||||
if (obj instanceof ItemStack)newArray[a] = toString((ItemStack)obj)+"(ore)";
|
||||
else newArray[a] = "<unknown>";
|
||||
}
|
||||
}
|
||||
else newArray[a] = "<unknowncls "+array[a].getClass().getSimpleName()+">";
|
||||
}
|
||||
|
||||
return ArrayUtils.toString(newArray).replace(",",", ");
|
||||
}
|
||||
|
||||
private OrbAcquirableItems(){}
|
||||
|
||||
Reference in new issue
Block a user