aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/tectech/thing/block/TileEntityForgeOfGods.java
diff options
context:
space:
mode:
authorMaya <10861407+serenibyss@users.noreply.github.com>2024-10-03 17:14:28 -0500
committerGitHub <noreply@github.com>2024-10-03 22:14:28 +0000
commite16f7ac07662fc1c1d9dc169620acaec062ef939 (patch)
treec8ca20bc922caca89edcc1ca65e92be414c7f9a4 /src/main/java/tectech/thing/block/TileEntityForgeOfGods.java
parent2f5a7889650e0fcaf8c95e95b37737af82a40798 (diff)
downloadGT5-Unofficial-e16f7ac07662fc1c1d9dc169620acaec062ef939.tar.gz
GT5-Unofficial-e16f7ac07662fc1c1d9dc169620acaec062ef939.tar.bz2
GT5-Unofficial-e16f7ac07662fc1c1d9dc169620acaec062ef939.zip
Godforge encore (#3213)
Co-authored-by: GDCloud <gdcloudstrike@gmail.com>
Diffstat (limited to 'src/main/java/tectech/thing/block/TileEntityForgeOfGods.java')
-rw-r--r--src/main/java/tectech/thing/block/TileEntityForgeOfGods.java70
1 files changed, 67 insertions, 3 deletions
diff --git a/src/main/java/tectech/thing/block/TileEntityForgeOfGods.java b/src/main/java/tectech/thing/block/TileEntityForgeOfGods.java
index dfe4bab143..49ab89de2b 100644
--- a/src/main/java/tectech/thing/block/TileEntityForgeOfGods.java
+++ b/src/main/java/tectech/thing/block/TileEntityForgeOfGods.java
@@ -17,6 +17,10 @@ public class TileEntityForgeOfGods extends TileEntity {
private int ringCount = 1;
private float colorR = .7f, colorG = .8f, colorB = 1f, gamma = 3f;
private float rotAngle = 0, rotAxisX = 1, rotAxisY = 0, rotAxisZ = 0;
+ private int rainbowR = 255, rainbowG = 0, rainbowB = 0;
+ private int rainbowState = 0;
+ private boolean rainbowMode = false;
+ private int rainbowCycleSpeed = 1;
private static final String NBT_TAG = "FOG:";
private static final String ROTATION_SPEED_NBT_TAG = NBT_TAG + "ROTATION";
@@ -30,6 +34,8 @@ public class TileEntityForgeOfGods extends TileEntity {
private static final String ROT_AXIS_X_NBT_TAG = NBT_TAG + "ROT_AXIS_X";
private static final String ROT_AXIS_Y_NBT_TAG = NBT_TAG + "ROT_AXIS_Y";
private static final String ROT_AXIS_Z_NBT_TAG = NBT_TAG + "ROT_AXIS_Z";
+ private static final String RAINBOW_MODE_NBT_TAG = NBT_TAG + "RAINBOW_MODE";
+ private static final String RAINBOW_MODE_CYCLE_SPEED_NBT_TAG = NBT_TAG + "RAINBOW_MODE_CYCLE_SPEED";
public static final float BACK_PLATE_DISTANCE = -121.5f, BACK_PLATE_RADIUS = 13f;
@@ -60,15 +66,15 @@ public class TileEntityForgeOfGods extends TileEntity {
}
public float getColorR() {
- return colorR;
+ return rainbowMode ? rainbowR / 255f : colorR;
}
public float getColorG() {
- return colorG;
+ return rainbowMode ? rainbowG / 255f : colorG;
}
public float getColorB() {
- return colorB;
+ return rainbowMode ? rainbowB / 255f : colorB;
}
public float getGamma() {
@@ -86,6 +92,15 @@ public class TileEntityForgeOfGods extends TileEntity {
this.gamma = gamma;
}
+ public void setRainbowMode(boolean state, int cycleSpeed) {
+ this.rainbowMode = state;
+ this.rainbowCycleSpeed = cycleSpeed;
+ }
+
+ public boolean getRainbowMode() {
+ return rainbowMode;
+ }
+
public int getRingCount() {
return ringCount;
}
@@ -157,6 +172,51 @@ public class TileEntityForgeOfGods extends TileEntity {
return y0 + ((x - x0) * (y1 - y0)) / (x1 - x0);
}
+ public void incrementRainbowColors() {
+ if (rainbowState == 0) {
+ rainbowG += rainbowCycleSpeed;
+ if (rainbowG >= 255) {
+ rainbowG = 255;
+ rainbowState = 1;
+ }
+ }
+ if (rainbowState == 1) {
+ rainbowR -= rainbowCycleSpeed;
+ if (rainbowR <= 0) {
+ rainbowR = 0;
+ rainbowState = 2;
+ }
+ }
+ if (rainbowState == 2) {
+ rainbowB += rainbowCycleSpeed;
+ if (rainbowB >= 255) {
+ rainbowB = 255;
+ rainbowState = 3;
+ }
+ }
+ if (rainbowState == 3) {
+ rainbowG -= rainbowCycleSpeed;
+ if (rainbowG <= 0) {
+ rainbowG = 0;
+ rainbowState = 4;
+ }
+ }
+ if (rainbowState == 4) {
+ rainbowR += rainbowCycleSpeed;
+ if (rainbowR >= 255) {
+ rainbowR = 255;
+ rainbowState = 5;
+ }
+ }
+ if (rainbowState == 5) {
+ rainbowB -= rainbowCycleSpeed;
+ if (rainbowB <= 0) {
+ rainbowB = 0;
+ rainbowState = 0;
+ }
+ }
+ }
+
@Override
public void writeToNBT(NBTTagCompound compound) {
super.writeToNBT(compound);
@@ -171,6 +231,8 @@ public class TileEntityForgeOfGods extends TileEntity {
compound.setFloat(ROT_AXIS_X_NBT_TAG, rotAxisX);
compound.setFloat(ROT_AXIS_Y_NBT_TAG, rotAxisY);
compound.setFloat(ROT_AXIS_Z_NBT_TAG, rotAxisZ);
+ compound.setBoolean(RAINBOW_MODE_NBT_TAG, rainbowMode);
+ compound.setInteger(RAINBOW_MODE_CYCLE_SPEED_NBT_TAG, rainbowCycleSpeed);
}
@Override
@@ -190,6 +252,8 @@ public class TileEntityForgeOfGods extends TileEntity {
rotAxisX = compound.getFloat(ROT_AXIS_X_NBT_TAG);
rotAxisY = compound.getFloat(ROT_AXIS_Y_NBT_TAG);
rotAxisZ = compound.getFloat(ROT_AXIS_Z_NBT_TAG);
+ rainbowMode = compound.getBoolean(RAINBOW_MODE_NBT_TAG);
+ rainbowCycleSpeed = compound.getInteger(RAINBOW_MODE_CYCLE_SPEED_NBT_TAG);
}
@Override