Skip to content

Commit e709f22

Browse files
committed
Merge remote-tracking branch 'origin/previews' into room-gui
2 parents b09e0f7 + d346212 commit e709f22

25 files changed

+1416
-11
lines changed

build.gradle

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,11 @@ repositories {
246246

247247
// TheOneProbe
248248
maven {
249-
name 'tterrag maven'
249+
url "https://maven.k-4u.nl"
250+
}
251+
252+
maven {
253+
name "tterrag maven"
250254
url "https://maven.tterrag.com/"
251255
}
252256
}

src/main/java/dev/compactmods/machines/CompactMachines.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import dev.compactmods.machines.config.ServerConfig;
66
import dev.compactmods.machines.core.Registration;
77
import dev.compactmods.machines.core.Tunnels;
8+
import dev.compactmods.machines.core.UIRegistration;
89
import net.minecraft.world.item.CreativeModeTab;
910
import net.minecraft.world.item.ItemStack;
1011
import net.minecraftforge.common.crafting.CraftingHelper;
@@ -37,6 +38,7 @@ public CompactMachines() {
3738
// Register blocks and items
3839
var eb = FMLJavaModLoadingContext.get().getModEventBus();
3940
Registration.init(eb);
41+
UIRegistration.init(eb);
4042
Tunnels.init(eb);
4143

4244
ModLoadingContext mlCtx = ModLoadingContext.get();

src/main/java/dev/compactmods/machines/client/ClientEventHandler.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package dev.compactmods.machines.client;
22

33
import dev.compactmods.machines.CompactMachines;
4+
import dev.compactmods.machines.client.screen.MachineRoomScreen;
45
import dev.compactmods.machines.core.Tunnels;
6+
import dev.compactmods.machines.core.UIRegistration;
7+
import net.minecraft.client.gui.screens.MenuScreens;
58
import net.minecraft.client.renderer.ItemBlockRenderTypes;
69
import net.minecraft.client.renderer.RenderType;
710
import net.minecraftforge.api.distmarker.Dist;
@@ -27,5 +30,7 @@ public static void onBlockColors(final ColorHandlerEvent.Block colors) {
2730
public static void onClientSetup(final FMLClientSetupEvent client) {
2831
RenderType cutout = RenderType.cutoutMipped();
2932
ItemBlockRenderTypes.setRenderLayer(Tunnels.BLOCK_TUNNEL_WALL.get(), cutout);
33+
34+
MenuScreens.register(UIRegistration.MACHINE_MENU.get(), MachineRoomScreen::new);
3035
}
3136
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package dev.compactmods.machines.client.level;
2+
3+
import net.minecraft.world.entity.Entity;
4+
import net.minecraft.world.level.entity.EntityTypeTest;
5+
import net.minecraft.world.level.entity.LevelEntityGetter;
6+
import net.minecraft.world.phys.AABB;
7+
8+
import javax.annotation.Nullable;
9+
import java.util.Collections;
10+
import java.util.UUID;
11+
import java.util.function.Consumer;
12+
13+
public class EmptyLevelEntityGetter implements LevelEntityGetter<Entity> {
14+
@Nullable
15+
@Override
16+
public Entity get(int p_156931_) {
17+
return null;
18+
}
19+
20+
@Nullable
21+
@Override
22+
public Entity get(UUID p_156939_) {
23+
return null;
24+
}
25+
26+
@Override
27+
public Iterable<Entity> getAll() {
28+
return Collections.emptySet();
29+
}
30+
31+
@Override
32+
public <U extends Entity> void get(EntityTypeTest<Entity, U> p_156935_, Consumer<U> p_156936_) {
33+
34+
}
35+
36+
@Override
37+
public void get(AABB p_156937_, Consumer<Entity> p_156938_) {
38+
39+
}
40+
41+
@Override
42+
public <U extends Entity> void get(EntityTypeTest<Entity, U> p_156932_, AABB p_156933_, Consumer<U> p_156934_) {
43+
44+
}
45+
}
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
package dev.compactmods.machines.client.level;
2+
3+
import net.minecraft.world.Difficulty;
4+
import net.minecraft.world.level.GameRules;
5+
import net.minecraft.world.level.storage.WritableLevelData;
6+
7+
/**
8+
* Credits to Immersive Engineering manual code for a baseline in 1.18.x.
9+
* Source: https://github.com/BluSunrize/ImmersiveEngineering/blob/1.18.2/src/main/java/blusunrize/immersiveengineering/common/util/fakeworld/FakeSpawnInfo.java
10+
*/
11+
public class FakeSpawnInfo implements WritableLevelData {
12+
private static final GameRules RULES = new GameRules();
13+
14+
private int spawnX;
15+
private int spawnY;
16+
private int spawnZ;
17+
private float spawnAngle;
18+
19+
@Override
20+
public void setXSpawn(int x)
21+
{
22+
spawnX = x;
23+
}
24+
25+
@Override
26+
public void setYSpawn(int y)
27+
{
28+
spawnY = y;
29+
}
30+
31+
@Override
32+
public void setZSpawn(int z)
33+
{
34+
spawnZ = z;
35+
}
36+
37+
@Override
38+
public void setSpawnAngle(float angle)
39+
{
40+
spawnAngle = angle;
41+
}
42+
43+
@Override
44+
public int getXSpawn()
45+
{
46+
return spawnX;
47+
}
48+
49+
@Override
50+
public int getYSpawn()
51+
{
52+
return spawnY;
53+
}
54+
55+
@Override
56+
public int getZSpawn()
57+
{
58+
return spawnZ;
59+
}
60+
61+
@Override
62+
public float getSpawnAngle()
63+
{
64+
return spawnAngle;
65+
}
66+
67+
@Override
68+
public long getGameTime()
69+
{
70+
return 0;
71+
}
72+
73+
@Override
74+
public long getDayTime()
75+
{
76+
return 0;
77+
}
78+
79+
@Override
80+
public boolean isThundering()
81+
{
82+
return false;
83+
}
84+
85+
@Override
86+
public boolean isRaining()
87+
{
88+
return false;
89+
}
90+
91+
@Override
92+
public void setRaining(boolean isRaining)
93+
{
94+
95+
}
96+
97+
@Override
98+
public boolean isHardcore()
99+
{
100+
return false;
101+
}
102+
103+
@Override
104+
public GameRules getGameRules()
105+
{
106+
return RULES;
107+
}
108+
109+
@Override
110+
public Difficulty getDifficulty()
111+
{
112+
return Difficulty.PEACEFUL;
113+
}
114+
115+
@Override
116+
public boolean isDifficultyLocked()
117+
{
118+
return false;
119+
}
120+
}
Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
package dev.compactmods.machines.client.level;
2+
3+
import net.minecraft.client.Minecraft;
4+
import net.minecraft.core.*;
5+
import net.minecraft.sounds.SoundEvent;
6+
import net.minecraft.sounds.SoundSource;
7+
import net.minecraft.util.profiling.InactiveProfiler;
8+
import net.minecraft.world.entity.Entity;
9+
import net.minecraft.world.entity.player.Player;
10+
import net.minecraft.world.item.crafting.RecipeManager;
11+
import net.minecraft.world.level.Level;
12+
import net.minecraft.world.level.LightLayer;
13+
import net.minecraft.world.level.biome.Biome;
14+
import net.minecraft.world.level.biome.Biomes;
15+
import net.minecraft.world.level.block.Block;
16+
import net.minecraft.world.level.block.state.BlockState;
17+
import net.minecraft.world.level.chunk.ChunkSource;
18+
import net.minecraft.world.level.dimension.DimensionType;
19+
import net.minecraft.world.level.entity.LevelEntityGetter;
20+
import net.minecraft.world.level.gameevent.GameEvent;
21+
import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings;
22+
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
23+
import net.minecraft.world.level.material.Fluid;
24+
import net.minecraft.world.level.saveddata.maps.MapItemSavedData;
25+
import net.minecraft.world.scores.Scoreboard;
26+
import net.minecraft.world.ticks.BlackholeTickAccess;
27+
import net.minecraft.world.ticks.LevelTickAccess;
28+
29+
import javax.annotation.Nullable;
30+
import java.util.*;
31+
32+
public class RenderingLevel extends Level {
33+
34+
private final TemplateChunkProvider chunkProvider;
35+
36+
public RenderingLevel(Map<BlockPos, BlockState> blocks) {
37+
super(new FakeSpawnInfo(), Level.OVERWORLD, Holder.direct(DimensionType.DEFAULT_OVERWORLD),
38+
() -> InactiveProfiler.INSTANCE, true, false, 0);
39+
this.chunkProvider = new TemplateChunkProvider(blocks, this, (p) -> true);
40+
}
41+
42+
public RenderingLevel(StructureTemplate blocks) {
43+
super(new FakeSpawnInfo(), Level.OVERWORLD, Holder.direct(DimensionType.DEFAULT_OVERWORLD),
44+
() -> InactiveProfiler.INSTANCE, true, false, 0);
45+
46+
StructurePlaceSettings s = new StructurePlaceSettings();
47+
var p = s.getRandomPalette(blocks.palettes, null);
48+
HashMap<BlockPos, BlockState> states = new HashMap<>();
49+
p.blocks().forEach(sbi -> states.put(sbi.pos, sbi.state));
50+
this.chunkProvider = new TemplateChunkProvider(states, this, (po) -> true);
51+
}
52+
53+
@Override
54+
public void sendBlockUpdated(BlockPos p_46612_, BlockState p_46613_, BlockState p_46614_, int p_46615_) {
55+
56+
}
57+
58+
@Override
59+
public void playSound(@Nullable Player p_46543_, double p_46544_, double p_46545_, double p_46546_, SoundEvent p_46547_, SoundSource p_46548_, float p_46549_, float p_46550_) {
60+
61+
}
62+
63+
@Override
64+
public void playSound(@Nullable Player p_46551_, Entity p_46552_, SoundEvent p_46553_, SoundSource p_46554_, float p_46555_, float p_46556_) {
65+
66+
}
67+
68+
@Override
69+
public String gatherChunkSourceStats() {
70+
return "";
71+
}
72+
73+
@Nullable
74+
@Override
75+
public Entity getEntity(int p_46492_) {
76+
return null;
77+
}
78+
79+
@Nullable
80+
@Override
81+
public MapItemSavedData getMapData(String p_46650_) {
82+
return null;
83+
}
84+
85+
@Override
86+
public void setMapData(String p_151533_, MapItemSavedData p_151534_) {
87+
88+
}
89+
90+
@Override
91+
public int getFreeMapId() {
92+
return 0;
93+
}
94+
95+
@Override
96+
public void destroyBlockProgress(int p_46506_, BlockPos p_46507_, int p_46508_) {
97+
98+
}
99+
100+
@Override
101+
public Scoreboard getScoreboard() {
102+
return new Scoreboard();
103+
}
104+
105+
@Override
106+
public RecipeManager getRecipeManager() {
107+
return new RecipeManager();
108+
}
109+
110+
@Override
111+
protected LevelEntityGetter<Entity> getEntities() {
112+
return new EmptyLevelEntityGetter();
113+
}
114+
115+
@Override
116+
public LevelTickAccess<Block> getBlockTicks() {
117+
return BlackholeTickAccess.emptyLevelList();
118+
}
119+
120+
@Override
121+
public LevelTickAccess<Fluid> getFluidTicks() {
122+
return BlackholeTickAccess.emptyLevelList();
123+
}
124+
125+
@Override
126+
public ChunkSource getChunkSource() {
127+
return chunkProvider;
128+
}
129+
130+
@Override
131+
public void levelEvent(@Nullable Player p_46771_, int p_46772_, BlockPos p_46773_, int p_46774_) {
132+
133+
}
134+
135+
@Override
136+
public void gameEvent(@Nullable Entity p_151549_, GameEvent p_151550_, BlockPos p_151551_) {
137+
138+
}
139+
140+
@Override
141+
public RegistryAccess registryAccess() {
142+
return Minecraft.getInstance().level.registryAccess();
143+
}
144+
145+
@Override
146+
public float getShade(Direction p_45522_, boolean p_45523_) {
147+
return 1;
148+
}
149+
150+
@Override
151+
public List<? extends Player> players() {
152+
return Collections.emptyList();
153+
}
154+
155+
@Override
156+
public Holder<Biome> getUncachedNoiseBiome(int p_204159_, int p_204160_, int p_204161_) {
157+
return Holder.direct(registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).getOrThrow(Biomes.PLAINS));
158+
}
159+
160+
@Override
161+
public int getBrightness(LightLayer p_45518_, BlockPos p_45519_) {
162+
return Level.MAX_BRIGHTNESS;
163+
}
164+
}

0 commit comments

Comments
 (0)