Skip to content

Commit

Permalink
test
Browse files Browse the repository at this point in the history
  • Loading branch information
Keriils committed Aug 23, 2024
1 parent f8d859d commit 6e7f429
Show file tree
Hide file tree
Showing 27 changed files with 819 additions and 30 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.xir.NHUtilities.common.entity;

import static com.xir.NHUtilities.config.Config.accelerateBlockInterval;
import static com.xir.NHUtilities.config.Config.enableBlockMode;
import static com.xir.NHUtilities.config.Config.enableTimeAcceleratorBoost;
import static com.xir.NHUtilities.main.NHUtilities.LOG;

Expand All @@ -21,11 +23,16 @@ public class EntityTimeAccelerator extends Entity {
// region Fields
protected int timeRate = enableTimeAcceleratorBoost ? 8 : 4; // must be set in here for texture render init
protected int remainingTime = 600;
protected boolean isGregTechMachineMode = true;

protected int targetIntX;
protected int targetIntY;
protected int targetIntZ;

public void setGregTechMachineMode(boolean setMode) {
this.isGregTechMachineMode = setMode;
}

public int getTimeRate() {
return timeRate;
}
Expand All @@ -50,7 +57,8 @@ public EntityTimeAccelerator(World worldIn) {
super(worldIn);
this.noClip = true;
this.preventEntitySpawning = false;
this.setSize(0.1F, 0.1F);
// this entity setting must modify with TimeVial field double tHalfSize = 0.05D
this.setSize(0.02F, 0.02F);
this.dataWatcher.addObject(2, timeRate);
}

Expand Down Expand Up @@ -78,7 +86,7 @@ private void tAccelerate() {
// Referenced GTNH to control the performance in 1ms
long tMaxTime = System.nanoTime() + 1000000;
if (shouldAccelerate(tileEntity)) {
if (tileEntity instanceof ITileEntityTickAcceleration tileEntityITEA) {
if (isGregTechMachineMode && tileEntity instanceof ITileEntityTickAcceleration tileEntityITEA) {
if (tileEntityITEA.tickAcceleration(timeRate)) return;
}
accelerateTileEntity(tileEntity, tMaxTime);
Expand Down Expand Up @@ -120,7 +128,9 @@ private boolean shouldAccelerate(TileEntity tileEntity) {
}

private boolean shouldAccelerate(Block block) {
return block != null && block.getTickRandomly() && worldObj.getTotalWorldTime() % 10 == 0;
return enableBlockMode && block != null
&& block.getTickRandomly()
&& worldObj.getTotalWorldTime() % accelerateBlockInterval == 0;
}
// endregion

Expand All @@ -129,6 +139,7 @@ private boolean shouldAccelerate(Block block) {
public void readEntityFromNBT(@NotNull NBTTagCompound tagCompound) {
timeRate = tagCompound.getInteger("timeRate");
this.dataWatcher.updateObject(2, tagCompound.getInteger("timeRate"));
isGregTechMachineMode = tagCompound.getBoolean("isGregTechMachineMode");
targetIntX = tagCompound.getInteger("targetIntX");
targetIntY = tagCompound.getInteger("targetIntY");
targetIntZ = tagCompound.getInteger("targetIntZ");
Expand All @@ -138,6 +149,7 @@ public void readEntityFromNBT(@NotNull NBTTagCompound tagCompound) {
@Override
public void writeEntityToNBT(@NotNull NBTTagCompound tagCompound) {
tagCompound.setInteger("timeRate", timeRate);
tagCompound.setBoolean("isGregTechMachineMode", isGregTechMachineMode);
tagCompound.setInteger("targetIntX", targetIntX);
tagCompound.setInteger("targetIntY", targetIntY);
tagCompound.setInteger("targetIntZ", targetIntZ);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@
import com.xir.NHUtilities.common.items.aItemCore.ItemBasic;
import com.xir.NHUtilities.common.items.baubles.GluttonyRing;
import com.xir.NHUtilities.common.items.baubles.HungerRing;
import com.xir.NHUtilities.common.items.timeVial.EternityVial;
import com.xir.NHUtilities.common.items.timeVial.TimeVial;

public class ModsItemsList {

public static final ItemBasic gluttonyRing = new GluttonyRing();
public static final ItemBasic hungerRing = new HungerRing();
public static final ItemBasic timeVial = new TimeVial();
public static final TimeVial eternityVial = new EternityVial();
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
package com.xir.NHUtilities.common.items.timeVial;

import java.util.List;

import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;

import org.jetbrains.annotations.NotNull;

import com.xir.NHUtilities.utils.TooltipsChroma;

import cpw.mods.fml.common.Optional;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import fox.spiteful.avaritia.items.LudicrousItems;

// @Optional.Interface(iface = "fox.spiteful.avaritia.render.ICosmicRenderItem",modid = "Avaritia")
public class EternityVial extends TimeVial /* implements ICosmicRenderItem */ {

// private IIcon cosmicMask; // to do ...
// private IIcon GTNH;

public EternityVial() {
setMaxStackSize(1);
setUnlocalizedName("EternityVial");
setTextureName("EternityVial");
}

// @Override
// @SideOnly(Side.CLIENT)
// public void registerIcons(IIconRegister register) {
// super.registerIcons(register);
// this.cosmicMask = register.registerIcon(NHUtilities.MODID + ":" + "EternityVial_mask3");
// this.GTNH = register.registerIcon(NHUtilities.MODID + ":" + "icon_GTNH");
// }
//
// @Override
// public IIcon getIcon(ItemStack stack, int pass) {
// if (pass == 1) {
// return this.GTNH;
// }
//
// return super.getIcon(stack, pass);
// }

@Override
@Optional.Method(modid = "Avaritia")
public EnumRarity getRarity(ItemStack stack) {
return LudicrousItems.cosmic;
}

@Override
@SideOnly(Side.CLIENT)
protected void getInfoFromNBT(@NotNull ItemStack stack, List<String> list) {
list.add(
TooltipsChroma
.applyChromaEffect(StatCollector.translateToLocal("text.NHUtilities.EternityVial.details_0")));
}

@Override
protected void mergeSameVialTime(@NotNull EntityPlayer player, ItemStack stack) {}

@Override
public void onUpdate(ItemStack stack, World worldIn, Entity playerIn, int slot, boolean isHeld) {}

@Override
protected boolean shouldAndConsumeTimeData(@NotNull ItemStack stack, int consumedTick) {
return true;
}

// @Override
// public IIcon getMaskTexture(ItemStack stack, EntityPlayer player) {
// return this.cosmicMask;
// }
//
// @Override
// public float getMaskMultiplier(ItemStack stack, EntityPlayer player) {
// return 1.0F;
// }
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import static com.xir.NHUtilities.config.Config.limitOneTimeVial;
import static com.xir.NHUtilities.config.Config.timeVialDiscountValue;
import static com.xir.NHUtilities.main.NHUtilities.LOG;
import static com.xir.NHUtilities.utils.InformationHelper.dividingLine;
import static com.xir.NHUtilities.utils.InformationHelper.holdShiftForDetails;

import java.util.List;
import java.util.Optional;
Expand All @@ -16,6 +18,7 @@
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;

import org.jetbrains.annotations.NotNull;
Expand All @@ -35,6 +38,7 @@ public class TimeVial extends ItemBasic {
protected static final int MAX_ACCELERATION = enableTimeAcceleratorBoost ? 256 : 128;
protected static final int NUMBER_EER = -846280; // ha,.... 114514
protected int storedTimeTick = 0;
protected final double tHalfSize = 0.01D; // 实体一半的大小

public TimeVial() {
setMaxStackSize(1);
Expand All @@ -46,6 +50,34 @@ public TimeVial() {
@SideOnly(Side.CLIENT)
public void addInformation(final @NotNull ItemStack stack, final EntityPlayer player, final List<String> list,
final boolean extraInformation) {
getInfoFromNBT(stack, list);
if (holdShiftForDetails(list)) {
list.add(dividingLine);
list.add(StatCollector.translateToLocal("text.NHUtilities.TimeVial.details_0"));
list.add(StatCollector.translateToLocal("text.NHUtilities.TimeVial.details_1"));
list.add(StatCollector.translateToLocal("text.NHUtilities.TimeVial.details_2"));
list.add(dividingLine);
list.add(StatCollector.translateToLocal("text.NHUtilities.TimeVial.details_3"));
list.add(StatCollector.translateToLocal("text.NHUtilities.TimeVial.details_4"));
list.add(StatCollector.translateToLocal("text.NHUtilities.TimeVial.details_5"));
list.add(StatCollector.translateToLocal("text.NHUtilities.TimeVial.details_6"));
list.add(StatCollector.translateToLocal("text.NHUtilities.TimeVial.details_7"));
list.add(dividingLine);
list.add(StatCollector.translateToLocal("text.NHUtilities.TimeVial.details_7"));
list.add(StatCollector.translateToLocal("text.NHUtilities.TimeVial.details_8"));
list.add(StatCollector.translateToLocal("text.NHUtilities.TimeVial.details_9"));
list.add(StatCollector.translateToLocal("text.NHUtilities.TimeVial.details_10"));
list.add(StatCollector.translateToLocal("text.NHUtilities.TimeVial.details_11"));
list.add(dividingLine);
list.add(StatCollector.translateToLocal("text.NHUtilities.TimeVial.details_12"));
list.add(StatCollector.translateToLocal("text.NHUtilities.TimeVial.details_13"));
list.add(StatCollector.translateToLocal("text.NHUtilities.TimeVial.details_14"));
list.add(dividingLine);
}
}

@SideOnly(Side.CLIENT)
protected void getInfoFromNBT(@NotNull ItemStack stack, List<String> list) {
NBTTagCompound nbtTagCompound = stack.getTagCompound();
if (nbtTagCompound == null) nbtTagCompound = new NBTTagCompound();
int storedTimeSeconds = nbtTagCompound.getInteger("storedTimeTick") / 20;
Expand All @@ -65,9 +97,6 @@ public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, @NotNull Wor
double targetPosY = y + 0.5D;
double targetPosZ = z + 0.5D;

// 实体一半的大小
double tHalfSize = 0.05D;

// 碰撞箱的最小坐标
double minX = targetPosX - tHalfSize;
double minY = targetPosY - tHalfSize;
Expand Down Expand Up @@ -104,6 +133,7 @@ public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, @NotNull Wor
}
} else if (shouldAndConsumeTimeData(stack, TIME_INIT_RATE * 600)) {
EntityTimeAccelerator eta = new EntityTimeAccelerator(world, x, y, z);
if (player.isSneaking()) eta.setGregTechMachineMode(false);
eta.setPosition(targetPosX, targetPosY, targetPosZ);
world.spawnEntityInWorld(eta);
if (enableLogInfo) LOG.info(
Expand All @@ -124,7 +154,7 @@ public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, @NotNull Wor
return false;
}

private boolean shouldAndConsumeTimeData(@NotNull ItemStack stack, int consumedTick) {
protected boolean shouldAndConsumeTimeData(@NotNull ItemStack stack, int consumedTick) {
int timeTick = stack.getTagCompound()
.getInteger("storedTimeTick");
if (timeTick >= consumedTick) {
Expand Down Expand Up @@ -154,7 +184,7 @@ public void onUpdate(ItemStack stack, World worldIn, Entity playerIn, int slot,
}
}

private void mergeSameVialTime(@NotNull EntityPlayer player, ItemStack stack) {
protected void mergeSameVialTime(@NotNull EntityPlayer player, ItemStack stack) {
for (ItemStack itemStack : player.inventory.mainInventory) {
if (itemStack != null && itemStack.getItem() == this && itemStack != stack) {
int thisTimeTick = stack.getTagCompound()
Expand Down
22 changes: 22 additions & 0 deletions src/main/java/com/xir/NHUtilities/config/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,16 @@ public class Config {

// region TimeVial
public static boolean enableTimeVial = true;
public static boolean enableEternityVial = true;
public static boolean enableBlockMode = true;
public static int accelerateBlockInterval = 10;
public static boolean enableLogInfo = false;
public static boolean limitOneTimeVial = true;
public static float timeVialDiscountValue = 0.9965F; // e..
public static float defaultTimeVialVolumeValue = 0.5F;
public static boolean enableTimeAcceleratorBoost = false;
public static boolean enableAccelerateGregTechMachine = true;
public static float accelerateGregTechMachineDiscount = 0.8F;
public static boolean enableNumberMultiplierTexture = false;
// endregion

Expand Down Expand Up @@ -80,6 +84,10 @@ static File minecraftHome() {
"enable GluttonyRing & AndHungerRing");
enableTimeVial = configuration
.getBoolean("enableTimeVial", CATEGORY_TIME_VIAL, enableTimeVial, "enable Time Vial");
enableEternityVial = configuration
.getBoolean("enableEternityVial", CATEGORY_TIME_VIAL, enableEternityVial, "enable Eternity Vial");
enableBlockMode = configuration
.getBoolean("enableBlockMode", CATEGORY_TIME_VIAL, enableBlockMode, "enable Block Mode");
enableLogInfo = configuration
.getBoolean("enableLogInfo", CATEGORY_TIME_VIAL, enableLogInfo, "enable log info debug");
limitOneTimeVial = configuration
Expand Down Expand Up @@ -108,11 +116,25 @@ static File minecraftHome() {
CATEGORY_TIME_VIAL,
enableAccelerateGregTechMachine,
"enable Accelerate GregTech Machine");
accelerateGregTechMachineDiscount = configuration.getFloat(
"accelerateGregTechMachineDiscount",
CATEGORY_TIME_VIAL,
accelerateGregTechMachineDiscount,
0.0F,
1.0F,
"accelerate GregTech Machine Discount");
enableNumberMultiplierTexture = configuration.getBoolean(
"enableNumberMultiplierTexture",
CATEGORY_TIME_VIAL,
enableNumberMultiplierTexture,
"enable Number Multiplier Texture");
accelerateBlockInterval = configuration.getInt(
"accelerateBlockInterval",
CATEGORY_TIME_VIAL,
accelerateBlockInterval,
2,
200,
"accelerate Block Interval");

}

Expand Down
5 changes: 3 additions & 2 deletions src/main/java/com/xir/NHUtilities/loader/EventLoader.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
package com.xir.NHUtilities.loader;

import static com.xir.NHUtilities.config.Config.enableGluttonyRingAndHungerRing;

import net.minecraftforge.common.MinecraftForge;

import com.xir.NHUtilities.common.events.GluttonyRingEvent;
import com.xir.NHUtilities.config.Config;

public class EventLoader {

public static void registerNHUtilitiesEvents() {
if (Config.enableGluttonyRingAndHungerRing) {
if (enableGluttonyRingAndHungerRing) {
MinecraftForge.EVENT_BUS.register(new GluttonyRingEvent());
}
}
Expand Down
11 changes: 8 additions & 3 deletions src/main/java/com/xir/NHUtilities/loader/ItemsLoader.java
Original file line number Diff line number Diff line change
@@ -1,19 +1,24 @@
package com.xir.NHUtilities.loader;

import static com.xir.NHUtilities.config.Config.enableGluttonyRingAndHungerRing;
import static com.xir.NHUtilities.config.Config.enableTimeVial;

import com.xir.NHUtilities.common.items.ModsItemsList;
import com.xir.NHUtilities.config.Config;

import cpw.mods.fml.common.registry.GameRegistry;

public class ItemsLoader {

public static void registerNHUtilitiesItems() {
if (Config.enableGluttonyRingAndHungerRing) {
if (enableGluttonyRingAndHungerRing) {
GameRegistry.registerItem(ModsItemsList.gluttonyRing, "GluttonyRing");
GameRegistry.registerItem(ModsItemsList.hungerRing, "HungerRing");
}
if (Config.enableTimeVial) {
if (enableTimeVial) {
GameRegistry.registerItem(ModsItemsList.timeVial, "TimeVial");
}
if (enableTimeVial) {
GameRegistry.registerItem(ModsItemsList.eternityVial, "EternityVial");
}
}
}
Loading

0 comments on commit 6e7f429

Please sign in to comment.