Skip to content

Commit fd11ae4

Browse files
committed
Dispatch forge and kubejs event when player falls into blackhole, translation fixes, structures gen changes, kugelblitz fixes, kubejs compat fix, ore leacher recipes fix, radioactivity changes
1 parent f8c71b1 commit fd11ae4

File tree

28 files changed

+371
-91
lines changed

28 files changed

+371
-91
lines changed

build.gradle

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,14 @@ dependencies {
140140
transitive = false
141141
}
142142

143-
compileOnly fg.deobf("dev.latvian.mods:kubejs-forge:${kubejs_version}")
144-
compileOnly fg.deobf("dev.latvian.mods:rhino-forge:${rhino_version}")
145-
compileOnly fg.deobf("dev.architectury:architectury-forge:${architectury_version}")
143+
implementation fg.deobf("dev.latvian.mods:kubejs-forge:${kubejs_version}"){
144+
transitive = false
145+
}
146+
147+
implementation fg.deobf("dev.latvian.mods:rhino-forge:${rhino_version}"){
148+
transitive = false
149+
}
150+
implementation fg.deobf("dev.architectury:architectury-forge:${architectury_version}")
146151
//implementation fg.deobf("curse.maven:ftb-library-forge-404465:5282375")
147152
//implementation fg.deobf("curse.maven:ftb-teams-forge-404468:5267190")
148153
//implementation fg.deobf("curse.maven:ftb-chunks-forge-314906:5267364")

src/generated/resources/assets/emi/lang/en_gb.json renamed to src/generated/resources/assets/emi/lang/en_us.json

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -724,6 +724,120 @@
724724
"tag.item.c.iron_dusts": "Iron Dusts",
725725
"tag.item.c.iron_plates": "Iron Plates",
726726
"tag.item.c.irradiated_borax_dusts": "Irradiated Borax Dusts",
727+
"tag.item.c.isotope.americium/241": "Americium 241",
728+
"tag.item.c.isotope.americium/241_ni": "Americium 241 Ni",
729+
"tag.item.c.isotope.americium/241_ox": "Americium 241 Ox",
730+
"tag.item.c.isotope.americium/241_za": "Americium 241 Za",
731+
"tag.item.c.isotope.americium/242": "Americium 242",
732+
"tag.item.c.isotope.americium/242_ni": "Americium 242 Ni",
733+
"tag.item.c.isotope.americium/242_ox": "Americium 242 Ox",
734+
"tag.item.c.isotope.americium/242_za": "Americium 242 Za",
735+
"tag.item.c.isotope.americium/243": "Americium 243",
736+
"tag.item.c.isotope.americium/243_ni": "Americium 243 Ni",
737+
"tag.item.c.isotope.americium/243_ox": "Americium 243 Ox",
738+
"tag.item.c.isotope.americium/243_za": "Americium 243 Za",
739+
"tag.item.c.isotope.berkelium/247": "Berkelium 247",
740+
"tag.item.c.isotope.berkelium/247_ni": "Berkelium 247 Ni",
741+
"tag.item.c.isotope.berkelium/247_ox": "Berkelium 247 Ox",
742+
"tag.item.c.isotope.berkelium/247_za": "Berkelium 247 Za",
743+
"tag.item.c.isotope.berkelium/248": "Berkelium 248",
744+
"tag.item.c.isotope.berkelium/248_ni": "Berkelium 248 Ni",
745+
"tag.item.c.isotope.berkelium/248_ox": "Berkelium 248 Ox",
746+
"tag.item.c.isotope.berkelium/248_za": "Berkelium 248 Za",
747+
"tag.item.c.isotope.boron/10": "Boron 10",
748+
"tag.item.c.isotope.boron/10_ni": "Boron 10 Ni",
749+
"tag.item.c.isotope.boron/10_ox": "Boron 10 Ox",
750+
"tag.item.c.isotope.boron/10_za": "Boron 10 Za",
751+
"tag.item.c.isotope.boron/11": "Boron 11",
752+
"tag.item.c.isotope.boron/11_ni": "Boron 11 Ni",
753+
"tag.item.c.isotope.boron/11_ox": "Boron 11 Ox",
754+
"tag.item.c.isotope.boron/11_za": "Boron 11 Za",
755+
"tag.item.c.isotope.californium/249": "Californium 249",
756+
"tag.item.c.isotope.californium/249_ni": "Californium 249 Ni",
757+
"tag.item.c.isotope.californium/249_ox": "Californium 249 Ox",
758+
"tag.item.c.isotope.californium/249_za": "Californium 249 Za",
759+
"tag.item.c.isotope.californium/250": "Californium 250",
760+
"tag.item.c.isotope.californium/250_ni": "Californium 250 Ni",
761+
"tag.item.c.isotope.californium/250_ox": "Californium 250 Ox",
762+
"tag.item.c.isotope.californium/250_za": "Californium 250 Za",
763+
"tag.item.c.isotope.californium/251": "Californium 251",
764+
"tag.item.c.isotope.californium/251_ni": "Californium 251 Ni",
765+
"tag.item.c.isotope.californium/251_ox": "Californium 251 Ox",
766+
"tag.item.c.isotope.californium/251_za": "Californium 251 Za",
767+
"tag.item.c.isotope.californium/252": "Californium 252",
768+
"tag.item.c.isotope.californium/252_ni": "Californium 252 Ni",
769+
"tag.item.c.isotope.californium/252_ox": "Californium 252 Ox",
770+
"tag.item.c.isotope.californium/252_za": "Californium 252 Za",
771+
"tag.item.c.isotope.curium/243": "Curium 243",
772+
"tag.item.c.isotope.curium/243_ni": "Curium 243 Ni",
773+
"tag.item.c.isotope.curium/243_ox": "Curium 243 Ox",
774+
"tag.item.c.isotope.curium/243_za": "Curium 243 Za",
775+
"tag.item.c.isotope.curium/245": "Curium 245",
776+
"tag.item.c.isotope.curium/245_ni": "Curium 245 Ni",
777+
"tag.item.c.isotope.curium/245_ox": "Curium 245 Ox",
778+
"tag.item.c.isotope.curium/245_za": "Curium 245 Za",
779+
"tag.item.c.isotope.curium/246": "Curium 246",
780+
"tag.item.c.isotope.curium/246_ni": "Curium 246 Ni",
781+
"tag.item.c.isotope.curium/246_ox": "Curium 246 Ox",
782+
"tag.item.c.isotope.curium/246_za": "Curium 246 Za",
783+
"tag.item.c.isotope.curium/247": "Curium 247",
784+
"tag.item.c.isotope.curium/247_ni": "Curium 247 Ni",
785+
"tag.item.c.isotope.curium/247_ox": "Curium 247 Ox",
786+
"tag.item.c.isotope.curium/247_za": "Curium 247 Za",
787+
"tag.item.c.isotope.lithium/6": "Lithium 6",
788+
"tag.item.c.isotope.lithium/6_ni": "Lithium 6 Ni",
789+
"tag.item.c.isotope.lithium/6_ox": "Lithium 6 Ox",
790+
"tag.item.c.isotope.lithium/6_za": "Lithium 6 Za",
791+
"tag.item.c.isotope.lithium/7": "Lithium 7",
792+
"tag.item.c.isotope.lithium/7_ni": "Lithium 7 Ni",
793+
"tag.item.c.isotope.lithium/7_ox": "Lithium 7 Ox",
794+
"tag.item.c.isotope.lithium/7_za": "Lithium 7 Za",
795+
"tag.item.c.isotope.neptunium/236": "Neptunium 236",
796+
"tag.item.c.isotope.neptunium/236_ni": "Neptunium 236 Ni",
797+
"tag.item.c.isotope.neptunium/236_ox": "Neptunium 236 Ox",
798+
"tag.item.c.isotope.neptunium/236_za": "Neptunium 236 Za",
799+
"tag.item.c.isotope.neptunium/237": "Neptunium 237",
800+
"tag.item.c.isotope.neptunium/237_ni": "Neptunium 237 Ni",
801+
"tag.item.c.isotope.neptunium/237_ox": "Neptunium 237 Ox",
802+
"tag.item.c.isotope.neptunium/237_za": "Neptunium 237 Za",
803+
"tag.item.c.isotope.plutonium/238": "Plutonium 238",
804+
"tag.item.c.isotope.plutonium/238_ni": "Plutonium 238 Ni",
805+
"tag.item.c.isotope.plutonium/238_ox": "Plutonium 238 Ox",
806+
"tag.item.c.isotope.plutonium/238_za": "Plutonium 238 Za",
807+
"tag.item.c.isotope.plutonium/239": "Plutonium 239",
808+
"tag.item.c.isotope.plutonium/239_ni": "Plutonium 239 Ni",
809+
"tag.item.c.isotope.plutonium/239_ox": "Plutonium 239 Ox",
810+
"tag.item.c.isotope.plutonium/239_za": "Plutonium 239 Za",
811+
"tag.item.c.isotope.plutonium/241": "Plutonium 241",
812+
"tag.item.c.isotope.plutonium/241_ni": "Plutonium 241 Ni",
813+
"tag.item.c.isotope.plutonium/241_ox": "Plutonium 241 Ox",
814+
"tag.item.c.isotope.plutonium/241_za": "Plutonium 241 Za",
815+
"tag.item.c.isotope.plutonium/242": "Plutonium 242",
816+
"tag.item.c.isotope.plutonium/242_ni": "Plutonium 242 Ni",
817+
"tag.item.c.isotope.plutonium/242_ox": "Plutonium 242 Ox",
818+
"tag.item.c.isotope.plutonium/242_za": "Plutonium 242 Za",
819+
"tag.item.c.isotope.quantite": "Quantite",
820+
"tag.item.c.isotope.thorium/230": "Thorium 230",
821+
"tag.item.c.isotope.thorium/230_ni": "Thorium 230 Ni",
822+
"tag.item.c.isotope.thorium/230_ox": "Thorium 230 Ox",
823+
"tag.item.c.isotope.thorium/230_za": "Thorium 230 Za",
824+
"tag.item.c.isotope.thorium/232": "Thorium 232",
825+
"tag.item.c.isotope.thorium/232_ni": "Thorium 232 Ni",
826+
"tag.item.c.isotope.thorium/232_ox": "Thorium 232 Ox",
827+
"tag.item.c.isotope.thorium/232_za": "Thorium 232 Za",
828+
"tag.item.c.isotope.uranium/233": "Uranium 233",
829+
"tag.item.c.isotope.uranium/233_ni": "Uranium 233 Ni",
830+
"tag.item.c.isotope.uranium/233_ox": "Uranium 233 Ox",
831+
"tag.item.c.isotope.uranium/233_za": "Uranium 233 Za",
832+
"tag.item.c.isotope.uranium/235": "Uranium 235",
833+
"tag.item.c.isotope.uranium/235_ni": "Uranium 235 Ni",
834+
"tag.item.c.isotope.uranium/235_ox": "Uranium 235 Ox",
835+
"tag.item.c.isotope.uranium/235_za": "Uranium 235 Za",
836+
"tag.item.c.isotope.uranium/238": "Uranium 238",
837+
"tag.item.c.isotope.uranium/238_ni": "Uranium 238 Ni",
838+
"tag.item.c.isotope.uranium/238_ox": "Uranium 238 Ox",
839+
"tag.item.c.isotope.uranium/238_za": "Uranium 238 Za",
840+
"tag.item.c.isotope.xenorium298": "Xenorium298",
727841
"tag.item.c.lapis_dusts": "Lapis Dusts",
728842
"tag.item.c.lead_dusts": "Lead Dusts",
729843
"tag.item.c.lead_ingots": "Lead Ingots",

src/generated/resources/assets/nuclearcraft/lang/en_us.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
"advancement.nc.wasteland_boss": "Wasteland Conqueror",
6363
"advancement.nc.wasteland_boss.desc": "Defeat the Boss of the Wasteland",
6464
"amount": "Amount: %s",
65+
"biome.nuclearcraft.wasteland": "Wasteland",
6566
"block.nuclearcraft.accelerator_beam": "(WIP) Accelerator Beam",
6667
"block.nuclearcraft.accelerator_beam_port": "(WIP) Accelerator Beam Port",
6768
"block.nuclearcraft.accelerator_casing": "(WIP) Accelerator Casing",
@@ -256,6 +257,7 @@
256257
"block.nuclearcraft.uranium_ore": "Uranium Ore",
257258
"block.nuclearcraft.uranium_rtg": "Uranium RTG",
258259
"block.nuclearcraft.villiaumite_heat_sink": "Villiaumite Heat Sink",
260+
"block.nuclearcraft.wasteland_earth": "Wasteland Earth",
259261
"block.nuclearcraft.water_heat_sink": "Water Heat Sink",
260262
"block.nuclearcraft.zinc_block": "Zinc Block",
261263
"block.nuclearcraft.zinc_ore": "Zinc Ore",

src/generated/resources/data/nuclearcraft/worldgen/placed_feature/wasteland_boss_lair.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"placement": [
44
{
55
"type": "minecraft:rarity_filter",
6-
"chance": 700
6+
"chance": 800
77
},
88
{
99
"type": "minecraft:heightmap",

src/generated/resources/data/nuclearcraft/worldgen/placed_feature/wasteland_portal.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"placement": [
44
{
55
"type": "minecraft:rarity_filter",
6-
"chance": 300
6+
"chance": 400
77
},
88
{
99
"type": "minecraft:heightmap",

src/generated/resources/data/nuclearcraft/worldgen/placed_feature/wasteland_ruins.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"placement": [
44
{
55
"type": "minecraft:rarity_filter",
6-
"chance": 300
6+
"chance": 250
77
},
88
{
99
"type": "minecraft:heightmap",

src/main/java/igentuman/nc/block/entity/fusion/FusionCoreBE.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,10 @@ public void tickServer() {
378378
simulateReaction();
379379
sendOutPower();
380380
handleMeltdown();
381-
381+
if(recipe == null && plasmaTemperature > 0) {
382+
changePlasmaTemperature(-(long) (plasmaTemperature / 10D));
383+
changed = true;
384+
}
382385
if(refreshCacheFlag || changed) {
383386
if(level.getGameTime() % 10 == 0) {
384387
updateAnalogSignal();

src/main/java/igentuman/nc/block/entity/kugelblitz/BlackHoleBE.java

Lines changed: 88 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,31 @@
11
package igentuman.nc.block.entity.kugelblitz;
22

33
import igentuman.nc.block.entity.NuclearCraftBE;
4+
import igentuman.nc.compat.kubejs.NCKubeJsEvents;
45
import igentuman.nc.multiblock.kugelblitz.KugelblitzRegistration;
56
import igentuman.nc.util.annotation.NBTField;
67
import net.minecraft.core.BlockPos;
78
import net.minecraft.core.particles.ParticleTypes;
9+
import net.minecraft.server.level.ServerPlayer;
810
import net.minecraft.sounds.SoundSource;
9-
import net.minecraft.world.damagesource.DamageSource;
10-
import net.minecraft.world.damagesource.DamageSources;
1111
import net.minecraft.world.entity.Entity;
1212
import net.minecraft.world.entity.LivingEntity;
1313
import net.minecraft.world.entity.item.ItemEntity;
1414
import net.minecraft.world.level.Level;
1515
import net.minecraft.world.level.block.Block;
1616
import net.minecraft.world.level.block.state.BlockState;
17+
import net.minecraft.world.level.gameevent.GameEvent;
1718
import net.minecraft.world.phys.AABB;
19+
import net.minecraftforge.common.MinecraftForge;
20+
import net.minecraftforge.eventbus.api.Event;
1821

1922
import java.util.List;
2023

2124
import static igentuman.nc.block.kugelblitz.BlackHoleBlock.ACTIVE;
2225
import static igentuman.nc.client.renderer.DistortShader.blackhole;
2326
import static igentuman.nc.setup.registration.NCSounds.BLACKHOLE_IDLE;
2427
import static igentuman.nc.setup.registration.NCSounds.BLACKHOLE_SPAWN;
28+
import static igentuman.nc.util.ModUtil.isKubeJsLoaded;
2529
import static net.minecraft.world.level.block.Blocks.AIR;
2630

2731
public class BlackHoleBE extends NuclearCraftBE {
@@ -35,7 +39,7 @@ public class BlackHoleBE extends NuclearCraftBE {
3539
@NBTField
3640
public int initDelay = 0;
3741
public int spawnDelay = 0;
38-
42+
private boolean hasEntities = false;
3943
public BlackHoleBE(BlockPos pPos, BlockState pBlockState) {
4044
super(KugelblitzRegistration.KUGELBLITZ_BE.get(NAME).get(), pPos, pBlockState);
4145
}
@@ -115,9 +119,11 @@ public void tickServer() {
115119
handleClosestEntities();
116120
}
117121

122+
118123
private void handleClosestEntities() {
119-
if (getLevel().getGameTime() % 2 != 0) return;
124+
if(!hasEntities && getLevel().getGameTime() % 10 != 0) return;
120125
double radius = 5.0;
126+
double consumeRadius = 1.1;
121127

122128
double centerX = worldPosition.getX() + 0.5;
123129
double centerY = worldPosition.getY() + 0.5;
@@ -129,39 +135,71 @@ private void handleClosestEntities() {
129135
);
130136

131137
List<Entity> entities = level.getEntitiesOfClass(Entity.class, boundingBox);
132-
138+
139+
hasEntities = !entities.isEmpty();
140+
133141
for (Entity entity : entities) {
134142
double dx = centerX - entity.getX();
135143
double dy = centerY - entity.getY();
136144
double dz = centerZ - entity.getZ();
137145

138146
double distance = Math.sqrt(dx * dx + dy * dy + dz * dz);
147+
148+
if (distance < 1.1) {
149+
consumeEntity(entity);
150+
continue;
151+
}
139152

140-
if (distance < 0.1) continue;
141-
153+
// Normalize direction vector
142154
double factor = 1.0 / distance;
143155
dx *= factor;
144156
dy *= factor;
145157
dz *= factor;
146158

147-
double pullStrength = (1.0 - distance / radius) * 10f;
148-
159+
double pullStrength = Math.min(3.0, 0.8 * (1.0 - Math.pow(distance / radius, 2)));
160+
161+
if (entity instanceof ItemEntity) {
162+
pullStrength *= 1.5;
163+
}
164+
149165
entity.setDeltaMovement(
150166
entity.getDeltaMovement().x + dx * pullStrength,
151167
entity.getDeltaMovement().y + dy * pullStrength,
152168
entity.getDeltaMovement().z + dz * pullStrength
153169
);
170+
171+
double maxSpeed = 1.0;
172+
double currentSpeed = entity.getDeltaMovement().length();
173+
if (currentSpeed > maxSpeed) {
174+
entity.setDeltaMovement(
175+
entity.getDeltaMovement().scale(maxSpeed / currentSpeed)
176+
);
177+
}
154178

155-
if (entity instanceof ItemEntity) {
156-
if (distance < 2) {
157-
entity.discard();
158-
}
159-
} else if (entity instanceof LivingEntity livingEntity && distance < 2) {
160-
if(livingEntity.getHealth() < 1024) {
161-
livingEntity.discard();
162-
} else {
163-
livingEntity.hurt(level.damageSources().magic(), 1024.0F);
179+
if (distance < consumeRadius) {
180+
consumeEntity(entity);
181+
}
182+
}
183+
}
184+
185+
/**
186+
* Consumes an entity that has been pulled into the black hole
187+
*/
188+
private void consumeEntity(Entity entity) {
189+
if (entity instanceof ItemEntity) {
190+
entity.remove(Entity.RemovalReason.CHANGED_DIMENSION);
191+
} else if (entity instanceof LivingEntity livingEntity) {
192+
if (livingEntity instanceof ServerPlayer) {
193+
PlayerEnterBlackholeEvent event = new PlayerEnterBlackholeEvent((ServerPlayer) livingEntity, getBlockPos(), getLevel());
194+
MinecraftForge.EVENT_BUS.post(event);
195+
if(isKubeJsLoaded()) {
196+
NCKubeJsEvents.onPlayerEnterBlackhole(event);
164197
}
198+
if(event.isCanceled()) return;
199+
entity.kill();
200+
201+
} else {
202+
entity.kill();
165203
}
166204
}
167205
}
@@ -180,4 +218,36 @@ public void evaporate() {
180218
setRemoved();
181219
getLevel().setBlockAndUpdate(getBlockPos(), AIR.defaultBlockState());
182220
}
221+
222+
223+
public class PlayerEnterBlackholeEvent extends Event {
224+
225+
@Override
226+
public boolean isCancelable() {
227+
return true;
228+
}
229+
230+
public ServerPlayer getPlayer() {
231+
return player;
232+
}
233+
234+
public BlockPos getBlackholePos() {
235+
return blackholePos;
236+
}
237+
238+
public Level getLevel() {
239+
return level;
240+
}
241+
242+
private final ServerPlayer player;
243+
private final BlockPos blackholePos;
244+
private final Level level;
245+
246+
public PlayerEnterBlackholeEvent(ServerPlayer player, BlockPos blackholePos, Level level) {
247+
this.player = player;
248+
this.blackholePos = blackholePos;
249+
this.level = level;
250+
}
251+
252+
}
183253
}

src/main/java/igentuman/nc/block/entity/kugelblitz/ChamberTerminalBE.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ public class ChamberTerminalBE extends MultiblockControllerBE {
6565
@NBTField
6666
public long feeding = 0;
6767
@NBTField
68+
public BlockPos blackholePos = BlockPos.ZERO;
69+
@NBTField
6870
public int energyPerTick = 0;
6971
@NBTField
7072
public double efficiency = 0;

0 commit comments

Comments
 (0)