Compare commits
2 Commits
36e2b9a886
...
72274c08f8
| Author | SHA1 | Date | |
|---|---|---|---|
| 72274c08f8 | |||
| 6b95a3891f |
270
CONTRIBUTING.md
Normal file
270
CONTRIBUTING.md
Normal file
@ -0,0 +1,270 @@
|
|||||||
|
# Contributing Guide (Java Style)
|
||||||
|
|
||||||
|
This project follows a strict, C/C++-style Java formatting rule set. The goal is to preserve intent, control flow clarity, and fast mental parsing. Please follow these rules for any Java changes.
|
||||||
|
|
||||||
|
If a tool or formatter fights these rules, the tool is wrong.
|
||||||
|
|
||||||
|
## Core Philosophy
|
||||||
|
|
||||||
|
- Java is written as if it were C/C++.
|
||||||
|
- Formatting must never change perceived control flow.
|
||||||
|
- Readability means fast, correct parsing in your head.
|
||||||
|
- Tools adapt to the codebase, not the other way around.
|
||||||
|
|
||||||
|
## Indentation & Whitespace
|
||||||
|
|
||||||
|
- Indentation: 4 spaces.
|
||||||
|
- No tabs.
|
||||||
|
- Avoid excessive vertical whitespace.
|
||||||
|
- Blank lines only when they add logical separation.
|
||||||
|
|
||||||
|
✅ Good:
|
||||||
|
```java
|
||||||
|
int sum(int a, int b) {
|
||||||
|
int r = a + b;
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
❌ Bad:
|
||||||
|
```java
|
||||||
|
int sum(int a, int b)
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
int r = a + b;
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Braces
|
||||||
|
|
||||||
|
- Braces are always required.
|
||||||
|
- Opening brace stays on the same line.
|
||||||
|
- Never rely on implicit scopes.
|
||||||
|
|
||||||
|
✅ Good:
|
||||||
|
```java
|
||||||
|
if (value == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
❌ Bad:
|
||||||
|
```java
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Imports (Strict Rules)
|
||||||
|
|
||||||
|
### Never use fully-qualified class names inline
|
||||||
|
|
||||||
|
❌ Forbidden:
|
||||||
|
```java
|
||||||
|
net.minecraft.util.math.BlockPos pos = new net.minecraft.util.math.BlockPos(0, 0, 0);
|
||||||
|
```
|
||||||
|
|
||||||
|
✅ Required:
|
||||||
|
```java
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
|
BlockPos pos = new BlockPos(0, 0, 0);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Import grouping and ordering
|
||||||
|
|
||||||
|
1) Imports from external/other packages first.
|
||||||
|
2) Blank line.
|
||||||
|
3) Imports from this project (net.Chipperfluff.*) next.
|
||||||
|
|
||||||
|
Inside each block, order by:
|
||||||
|
1) Classes
|
||||||
|
2) Functions (static method imports)
|
||||||
|
3) Variables/constants (static field imports)
|
||||||
|
4) Enums
|
||||||
|
|
||||||
|
If there are no project imports, do not add a blank line.
|
||||||
|
|
||||||
|
## Method Signatures
|
||||||
|
|
||||||
|
- Method signatures must stay on one line.
|
||||||
|
- Do not break parameters across multiple lines.
|
||||||
|
- Long lines are acceptable; ambiguity is not.
|
||||||
|
|
||||||
|
✅ Good:
|
||||||
|
```java
|
||||||
|
void processUser(User user, int flags, boolean force, long timeout) {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
❌ Bad:
|
||||||
|
```java
|
||||||
|
void processUser(
|
||||||
|
User user,
|
||||||
|
int flags,
|
||||||
|
boolean force,
|
||||||
|
long timeout
|
||||||
|
) {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Function Calls & Argument Layout
|
||||||
|
|
||||||
|
### Default rule
|
||||||
|
- Single-line calls are preferred.
|
||||||
|
- Flat calls stay flat.
|
||||||
|
- Length alone is not a reason to wrap.
|
||||||
|
|
||||||
|
✅ Good:
|
||||||
|
```java
|
||||||
|
Color color = user.getProfile().getSettings().getTheme().getPrimaryColor();
|
||||||
|
```
|
||||||
|
|
||||||
|
### Multiline calls are allowed only when:
|
||||||
|
- The call is structural or declarative.
|
||||||
|
- Each argument is conceptually distinct.
|
||||||
|
- Nesting would otherwise hide meaning.
|
||||||
|
|
||||||
|
✅ Good (structural/declarative):
|
||||||
|
```java
|
||||||
|
BiomeModifications.addFeature(
|
||||||
|
BiomeSelectors.foundInOverworld(),
|
||||||
|
GenerationStep.Feature.UNDERGROUND_ORES,
|
||||||
|
RegistryKey.of(
|
||||||
|
RegistryKeys.PLACED_FEATURE,
|
||||||
|
new Identifier("chipi", "chipper_ore")
|
||||||
|
)
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
❌ Bad (no semantic gain):
|
||||||
|
```java
|
||||||
|
doThing(
|
||||||
|
a,
|
||||||
|
b,
|
||||||
|
c
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
## Chained Calls
|
||||||
|
|
||||||
|
- Flat chains stay on one line.
|
||||||
|
- Long or builder-style chains may be split vertically.
|
||||||
|
- Each chained step gets its own line.
|
||||||
|
|
||||||
|
✅ Good:
|
||||||
|
```java
|
||||||
|
builder
|
||||||
|
.withColor(theme.getPrimaryColor())
|
||||||
|
.withSize(32)
|
||||||
|
.enableShadow()
|
||||||
|
.build();
|
||||||
|
```
|
||||||
|
|
||||||
|
❌ Bad:
|
||||||
|
```java
|
||||||
|
builder.withColor(
|
||||||
|
theme.getPrimaryColor()
|
||||||
|
).withSize(
|
||||||
|
32
|
||||||
|
).enableShadow().build();
|
||||||
|
```
|
||||||
|
|
||||||
|
## Control Flow & Returns
|
||||||
|
|
||||||
|
- Early returns are encouraged.
|
||||||
|
- Avoid artificial nesting.
|
||||||
|
- Single-exit functions are not required.
|
||||||
|
|
||||||
|
✅ Good:
|
||||||
|
```java
|
||||||
|
void handle(User user) {
|
||||||
|
if (user == null) return;
|
||||||
|
if (!user.isActive()) return;
|
||||||
|
|
||||||
|
process(user);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
❌ Bad:
|
||||||
|
```java
|
||||||
|
void handle(User user) {
|
||||||
|
if (user != null) {
|
||||||
|
if (user.isActive()) {
|
||||||
|
process(user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## One-Liners
|
||||||
|
|
||||||
|
- One-liners allowed for simple guard clauses.
|
||||||
|
- No complex logic on one line.
|
||||||
|
|
||||||
|
✅ Allowed:
|
||||||
|
```java
|
||||||
|
if (value == null) return;
|
||||||
|
```
|
||||||
|
|
||||||
|
❌ Not allowed:
|
||||||
|
```java
|
||||||
|
if (a == b && c != d && flag && check()) doThing();
|
||||||
|
```
|
||||||
|
|
||||||
|
## Null Handling
|
||||||
|
|
||||||
|
- null is a valid, intentional state.
|
||||||
|
- Do not over-engineer around it.
|
||||||
|
- Prefer clarity over defensive clutter.
|
||||||
|
|
||||||
|
✅ Good:
|
||||||
|
```java
|
||||||
|
User user = findUser(id);
|
||||||
|
if (user == null) return;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Logging & Debug Output
|
||||||
|
|
||||||
|
- Logging must be short and readable.
|
||||||
|
- Prefer System.out.println for quick diagnostics.
|
||||||
|
- Verbose logging only when justified.
|
||||||
|
|
||||||
|
✅ Good:
|
||||||
|
```java
|
||||||
|
System.out.println("Loaded structure: " + id);
|
||||||
|
```
|
||||||
|
|
||||||
|
## Autoformatters & Linters
|
||||||
|
|
||||||
|
Autoformatters must not:
|
||||||
|
|
||||||
|
- Break method signatures.
|
||||||
|
- Move braces to new lines.
|
||||||
|
- Introduce unwanted trailing newlines.
|
||||||
|
- Rewrap stable code repeatedly.
|
||||||
|
|
||||||
|
If a formatter fights these rules: disable or reconfigure it.
|
||||||
|
|
||||||
|
## Empty Methods
|
||||||
|
|
||||||
|
Empty methods or constructors must be written on one line:
|
||||||
|
|
||||||
|
```java
|
||||||
|
public static void register() {}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Summary (Non-Negotiable)
|
||||||
|
|
||||||
|
- Java written with C/C++ structure.
|
||||||
|
- Compact signatures, explicit layout.
|
||||||
|
- Imports always used (no fully-qualified inline types).
|
||||||
|
- Multiline formatting only when it adds meaning.
|
||||||
|
- Formatting reflects logic, not fashion.
|
||||||
|
|
||||||
@ -1,23 +1,24 @@
|
|||||||
package net.Chipperfluff.chipi;
|
package net.Chipperfluff.chipi;
|
||||||
|
|
||||||
|
import net.fabricmc.api.ModInitializer;
|
||||||
|
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.advancement.ModCriteria;
|
import net.Chipperfluff.chipi.advancement.ModCriteria;
|
||||||
import net.Chipperfluff.chipi.block.ModBlocks;
|
import net.Chipperfluff.chipi.block.ModBlocks;
|
||||||
import net.Chipperfluff.chipi.command.CommandHandler;
|
import net.Chipperfluff.chipi.command.CommandHandler;
|
||||||
import net.Chipperfluff.chipi.effect.ChipiBlessingEvents;
|
import net.Chipperfluff.chipi.effect.ChipiBlessingEvents;
|
||||||
import net.Chipperfluff.chipi.effect.ChipiHungerHandler;
|
import net.Chipperfluff.chipi.effect.ChipiHungerHandler;
|
||||||
import net.Chipperfluff.chipi.effect.ModEffects;
|
import net.Chipperfluff.chipi.effect.ModEffects;
|
||||||
import net.Chipperfluff.chipi.entity.ModEntities;
|
|
||||||
import net.Chipperfluff.chipi.entity.SpawnLogic;
|
|
||||||
import net.Chipperfluff.chipi.entity.MepEntity;
|
import net.Chipperfluff.chipi.entity.MepEntity;
|
||||||
|
import net.Chipperfluff.chipi.entity.ModEntities;
|
||||||
import net.Chipperfluff.chipi.entity.PlayerJrEntity;
|
import net.Chipperfluff.chipi.entity.PlayerJrEntity;
|
||||||
|
import net.Chipperfluff.chipi.entity.SpawnLogic;
|
||||||
import net.Chipperfluff.chipi.item.ModItemGroups;
|
import net.Chipperfluff.chipi.item.ModItemGroups;
|
||||||
import net.Chipperfluff.chipi.item.ModItems;
|
import net.Chipperfluff.chipi.item.ModItems;
|
||||||
|
import net.Chipperfluff.chipi.item.music.ModMusicDiscs;
|
||||||
import net.Chipperfluff.chipi.server.ChipiServerEvents;
|
import net.Chipperfluff.chipi.server.ChipiServerEvents;
|
||||||
import net.Chipperfluff.chipi.sound.ModSounds;
|
import net.Chipperfluff.chipi.sound.ModSounds;
|
||||||
import net.fabricmc.api.ModInitializer;
|
|
||||||
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry;
|
|
||||||
import net.Chipperfluff.chipi.util.TickScheduler;
|
import net.Chipperfluff.chipi.util.TickScheduler;
|
||||||
import net.Chipperfluff.chipi.item.music.ModMusicDiscs;
|
|
||||||
|
|
||||||
public class ChipiMod implements ModInitializer {
|
public class ChipiMod implements ModInitializer {
|
||||||
|
|
||||||
|
|||||||
@ -5,14 +5,9 @@ import net.minecraft.advancement.criterion.Criteria;
|
|||||||
public class ModCriteria {
|
public class ModCriteria {
|
||||||
|
|
||||||
public static final PortalActivatedTrigger PORTAL_ACTIVATED = Criteria.register(new PortalActivatedTrigger());
|
public static final PortalActivatedTrigger PORTAL_ACTIVATED = Criteria.register(new PortalActivatedTrigger());
|
||||||
|
|
||||||
public static final PortalDestroyedTrigger PORTAL_DESTROYED = Criteria.register(new PortalDestroyedTrigger());
|
public static final PortalDestroyedTrigger PORTAL_DESTROYED = Criteria.register(new PortalDestroyedTrigger());
|
||||||
|
|
||||||
public static final VoidConsumedTrigger VOID_CONSUMED_TRIGGER = Criteria.register(new VoidConsumedTrigger());
|
public static final VoidConsumedTrigger VOID_CONSUMED_TRIGGER = Criteria.register(new VoidConsumedTrigger());
|
||||||
|
|
||||||
public static final VoidConsumedFireTrigger VOID_CONSUMED_FIRE_TRIGGER = Criteria.register(new VoidConsumedFireTrigger());
|
public static final VoidConsumedFireTrigger VOID_CONSUMED_FIRE_TRIGGER = Criteria.register(new VoidConsumedFireTrigger());
|
||||||
|
|
||||||
public static void register() {
|
public static void register() {}
|
||||||
// classload trigger
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package net.Chipperfluff.chipi.block;
|
package net.Chipperfluff.chipi.block;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.advancement.ModCriteria;
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.PillarBlock;
|
import net.minecraft.block.PillarBlock;
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
@ -9,6 +8,8 @@ import net.minecraft.server.network.ServerPlayerEntity;
|
|||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.advancement.ModCriteria;
|
||||||
|
|
||||||
public class ChipperFrameBlock extends PillarBlock {
|
public class ChipperFrameBlock extends PillarBlock {
|
||||||
|
|
||||||
public ChipperFrameBlock(Settings settings) {
|
public ChipperFrameBlock(Settings settings) {
|
||||||
|
|||||||
@ -15,7 +15,6 @@ import net.minecraft.util.shape.VoxelShape;
|
|||||||
import net.minecraft.util.shape.VoxelShapes;
|
import net.minecraft.util.shape.VoxelShapes;
|
||||||
import net.minecraft.world.BlockView;
|
import net.minecraft.world.BlockView;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
|
|
||||||
public class ChipperPortalBlock extends Block {
|
public class ChipperPortalBlock extends Block {
|
||||||
@ -71,7 +70,6 @@ public class ChipperPortalBlock extends Block {
|
|||||||
player.setOnGround(true);
|
player.setOnGround(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static BlockPos resolveSafeSpawn(ServerWorld targetWorld) {
|
public static BlockPos resolveSafeSpawn(ServerWorld targetWorld) {
|
||||||
BlockPos spawn = DEFAULT_SPAWN;
|
BlockPos spawn = DEFAULT_SPAWN;
|
||||||
BlockPos under = spawn.down();
|
BlockPos under = spawn.down();
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package net.Chipperfluff.chipi.block;
|
package net.Chipperfluff.chipi.block;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.advancement.ModCriteria;
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
import net.minecraft.server.world.ServerWorld;
|
import net.minecraft.server.world.ServerWorld;
|
||||||
@ -8,6 +7,8 @@ import net.minecraft.util.math.BlockPos;
|
|||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.advancement.ModCriteria;
|
||||||
|
|
||||||
public class ChipperPortalShape {
|
public class ChipperPortalShape {
|
||||||
|
|
||||||
private final World world;
|
private final World world;
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package net.Chipperfluff.chipi.block;
|
package net.Chipperfluff.chipi.block;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.ChipiMod;
|
|
||||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||||
import net.minecraft.block.AbstractBlock;
|
import net.minecraft.block.AbstractBlock;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
@ -11,6 +10,8 @@ import net.minecraft.registry.Registries;
|
|||||||
import net.minecraft.registry.Registry;
|
import net.minecraft.registry.Registry;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.ChipiMod;
|
||||||
|
|
||||||
public class ModBlocks {
|
public class ModBlocks {
|
||||||
|
|
||||||
public static final Block VOID_BLOCK = Registry.register(
|
public static final Block VOID_BLOCK = Registry.register(
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package net.Chipperfluff.chipi.block;
|
package net.Chipperfluff.chipi.block;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.advancement.ModCriteria;
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
@ -17,6 +16,8 @@ import net.minecraft.util.Identifier;
|
|||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.advancement.ModCriteria;
|
||||||
|
|
||||||
public class VoidBlock extends Block {
|
public class VoidBlock extends Block {
|
||||||
|
|
||||||
public VoidBlock(Settings settings) {
|
public VoidBlock(Settings settings) {
|
||||||
|
|||||||
@ -1,12 +1,13 @@
|
|||||||
package net.Chipperfluff.chipi.client;
|
package net.Chipperfluff.chipi.client;
|
||||||
|
|
||||||
|
import net.fabricmc.api.ClientModInitializer;
|
||||||
|
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
|
||||||
|
import net.minecraft.client.render.RenderLayer;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.block.ModBlocks;
|
import net.Chipperfluff.chipi.block.ModBlocks;
|
||||||
import net.Chipperfluff.chipi.client.entity.ModEntityRenderers;
|
import net.Chipperfluff.chipi.client.entity.ModEntityRenderers;
|
||||||
import net.Chipperfluff.chipi.client.hud.ChipiStatusBar;
|
import net.Chipperfluff.chipi.client.hud.ChipiStatusBar;
|
||||||
import net.Chipperfluff.chipi.util.ClientTickScheduler;
|
import net.Chipperfluff.chipi.util.ClientTickScheduler;
|
||||||
import net.fabricmc.api.ClientModInitializer;
|
|
||||||
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
|
|
||||||
import net.minecraft.client.render.RenderLayer;
|
|
||||||
|
|
||||||
public class ChipiClient implements ClientModInitializer {
|
public class ChipiClient implements ClientModInitializer {
|
||||||
|
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
package net.Chipperfluff.chipi.client;
|
package net.Chipperfluff.chipi.client;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.block.ModBlocks;
|
|
||||||
import net.Chipperfluff.chipi.item.ModItems;
|
|
||||||
import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback;
|
import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.block.ModBlocks;
|
||||||
|
import net.Chipperfluff.chipi.item.ModItems;
|
||||||
|
|
||||||
public final class ModTooltips {
|
public final class ModTooltips {
|
||||||
|
|
||||||
private ModTooltips() {
|
private ModTooltips() {}
|
||||||
}
|
|
||||||
|
|
||||||
public static void register() {
|
public static void register() {
|
||||||
|
|
||||||
|
|||||||
@ -1,13 +1,14 @@
|
|||||||
package net.Chipperfluff.chipi.client.entity;
|
package net.Chipperfluff.chipi.client.entity;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.ChipiMod;
|
|
||||||
import net.Chipperfluff.chipi.entity.MepEntity;
|
|
||||||
import net.minecraft.client.render.entity.BipedEntityRenderer;
|
import net.minecraft.client.render.entity.BipedEntityRenderer;
|
||||||
import net.minecraft.client.render.entity.EntityRendererFactory;
|
import net.minecraft.client.render.entity.EntityRendererFactory;
|
||||||
import net.minecraft.client.render.entity.model.BipedEntityModel;
|
import net.minecraft.client.render.entity.model.BipedEntityModel;
|
||||||
import net.minecraft.client.render.entity.model.EntityModelLayers;
|
import net.minecraft.client.render.entity.model.EntityModelLayers;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.ChipiMod;
|
||||||
|
import net.Chipperfluff.chipi.entity.MepEntity;
|
||||||
|
|
||||||
public class MepRenderer extends BipedEntityRenderer<MepEntity, BipedEntityModel<MepEntity>> {
|
public class MepRenderer extends BipedEntityRenderer<MepEntity, BipedEntityModel<MepEntity>> {
|
||||||
|
|
||||||
private static final Identifier TEXTURE = new Identifier(ChipiMod.MOD_ID, "textures/entity/mep.png");
|
private static final Identifier TEXTURE = new Identifier(ChipiMod.MOD_ID, "textures/entity/mep.png");
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
package net.Chipperfluff.chipi.client.entity;
|
package net.Chipperfluff.chipi.client.entity;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.entity.ModEntities;
|
|
||||||
import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry;
|
import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.entity.ModEntities;
|
||||||
|
|
||||||
public class ModEntityRenderers {
|
public class ModEntityRenderers {
|
||||||
|
|
||||||
public static void register() {
|
public static void register() {
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package net.Chipperfluff.chipi.client.entity;
|
package net.Chipperfluff.chipi.client.entity;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.entity.PlayerJrEntity;
|
|
||||||
import net.minecraft.client.network.AbstractClientPlayerEntity;
|
import net.minecraft.client.network.AbstractClientPlayerEntity;
|
||||||
import net.minecraft.client.render.VertexConsumerProvider;
|
import net.minecraft.client.render.VertexConsumerProvider;
|
||||||
import net.minecraft.client.render.entity.BipedEntityRenderer;
|
import net.minecraft.client.render.entity.BipedEntityRenderer;
|
||||||
@ -11,6 +10,8 @@ import net.minecraft.client.util.DefaultSkinHelper;
|
|||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.entity.PlayerJrEntity;
|
||||||
|
|
||||||
public class PlayerJrRenderer
|
public class PlayerJrRenderer
|
||||||
extends BipedEntityRenderer<PlayerJrEntity, BipedEntityModel<PlayerJrEntity>> {
|
extends BipedEntityRenderer<PlayerJrEntity, BipedEntityModel<PlayerJrEntity>> {
|
||||||
|
|
||||||
|
|||||||
@ -1,12 +1,13 @@
|
|||||||
package net.Chipperfluff.chipi.client.hud;
|
package net.Chipperfluff.chipi.client.hud;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.item.ModItems;
|
|
||||||
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
|
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.gui.DrawContext;
|
import net.minecraft.client.gui.DrawContext;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.entity.player.PlayerInventory;
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.item.ModItems;
|
||||||
|
|
||||||
import static net.Chipperfluff.chipi.util.ChipiTrackedData.CHIPI_ENERGY;
|
import static net.Chipperfluff.chipi.util.ChipiTrackedData.CHIPI_ENERGY;
|
||||||
|
|
||||||
public class ChipiStatusBar {
|
public class ChipiStatusBar {
|
||||||
|
|||||||
@ -4,8 +4,6 @@ import com.mojang.brigadier.CommandDispatcher;
|
|||||||
import com.mojang.brigadier.arguments.BoolArgumentType;
|
import com.mojang.brigadier.arguments.BoolArgumentType;
|
||||||
import com.mojang.brigadier.arguments.StringArgumentType;
|
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||||
import com.mojang.brigadier.context.CommandContext;
|
import com.mojang.brigadier.context.CommandContext;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.world.gen.struct.ChipiStructures;
|
|
||||||
import net.minecraft.command.CommandSource;
|
import net.minecraft.command.CommandSource;
|
||||||
import net.minecraft.command.argument.BlockPosArgumentType;
|
import net.minecraft.command.argument.BlockPosArgumentType;
|
||||||
import net.minecraft.server.command.CommandManager;
|
import net.minecraft.server.command.CommandManager;
|
||||||
@ -14,6 +12,8 @@ import net.minecraft.server.world.ServerWorld;
|
|||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.world.gen.struct.ChipiStructures;
|
||||||
|
|
||||||
public class ChpCommand {
|
public class ChpCommand {
|
||||||
|
|
||||||
public static void register(CommandDispatcher<ServerCommandSource> dispatcher) {
|
public static void register(CommandDispatcher<ServerCommandSource> dispatcher) {
|
||||||
|
|||||||
@ -3,8 +3,6 @@ package net.Chipperfluff.chipi.command;
|
|||||||
import com.mojang.brigadier.CommandDispatcher;
|
import com.mojang.brigadier.CommandDispatcher;
|
||||||
import com.mojang.brigadier.arguments.StringArgumentType;
|
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||||
import com.mojang.brigadier.context.CommandContext;
|
import com.mojang.brigadier.context.CommandContext;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.world.gen.struct.ChipiStructures;
|
|
||||||
import net.minecraft.command.CommandSource;
|
import net.minecraft.command.CommandSource;
|
||||||
import net.minecraft.command.argument.BlockPosArgumentType;
|
import net.minecraft.command.argument.BlockPosArgumentType;
|
||||||
import net.minecraft.server.command.CommandManager;
|
import net.minecraft.server.command.CommandManager;
|
||||||
@ -13,6 +11,8 @@ import net.minecraft.server.world.ServerWorld;
|
|||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.world.gen.struct.ChipiStructures;
|
||||||
|
|
||||||
public class CspCommand {
|
public class CspCommand {
|
||||||
|
|
||||||
public static void register(CommandDispatcher<ServerCommandSource> dispatcher) {
|
public static void register(CommandDispatcher<ServerCommandSource> dispatcher) {
|
||||||
|
|||||||
@ -2,10 +2,6 @@ package net.Chipperfluff.chipi.command;
|
|||||||
|
|
||||||
import com.mojang.brigadier.CommandDispatcher;
|
import com.mojang.brigadier.CommandDispatcher;
|
||||||
import com.mojang.brigadier.context.CommandContext;
|
import com.mojang.brigadier.context.CommandContext;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.entity.ModEntities;
|
|
||||||
import net.Chipperfluff.chipi.entity.PlayerJrEntity;
|
|
||||||
|
|
||||||
import net.minecraft.command.argument.EntityArgumentType;
|
import net.minecraft.command.argument.EntityArgumentType;
|
||||||
import net.minecraft.server.command.CommandManager;
|
import net.minecraft.server.command.CommandManager;
|
||||||
import net.minecraft.server.command.ServerCommandSource;
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
@ -14,6 +10,9 @@ import net.minecraft.server.world.ServerWorld;
|
|||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.entity.ModEntities;
|
||||||
|
import net.Chipperfluff.chipi.entity.PlayerJrEntity;
|
||||||
|
|
||||||
public final class SpawnJrCommand {
|
public final class SpawnJrCommand {
|
||||||
|
|
||||||
public static void register(CommandDispatcher<ServerCommandSource> dispatcher) {
|
public static void register(CommandDispatcher<ServerCommandSource> dispatcher) {
|
||||||
|
|||||||
@ -1,11 +1,12 @@
|
|||||||
package net.Chipperfluff.chipi.effect;
|
package net.Chipperfluff.chipi.effect;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.ChipiMod;
|
|
||||||
import net.minecraft.entity.effect.StatusEffect;
|
import net.minecraft.entity.effect.StatusEffect;
|
||||||
import net.minecraft.registry.Registries;
|
import net.minecraft.registry.Registries;
|
||||||
import net.minecraft.registry.Registry;
|
import net.minecraft.registry.Registry;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.ChipiMod;
|
||||||
|
|
||||||
public class ModEffects {
|
public class ModEffects {
|
||||||
|
|
||||||
public static final StatusEffect CHIPI_BLESSING = new ChipiBlessingEffect();
|
public static final StatusEffect CHIPI_BLESSING = new ChipiBlessingEffect();
|
||||||
|
|||||||
@ -1,7 +1,5 @@
|
|||||||
package net.Chipperfluff.chipi.effect;
|
package net.Chipperfluff.chipi.effect;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.entity.ModEntities;
|
|
||||||
import net.Chipperfluff.chipi.entity.PlayerJrEntity;
|
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.entity.attribute.EntityAttributeInstance;
|
import net.minecraft.entity.attribute.EntityAttributeInstance;
|
||||||
import net.minecraft.entity.attribute.EntityAttributes;
|
import net.minecraft.entity.attribute.EntityAttributes;
|
||||||
@ -11,9 +9,11 @@ import net.minecraft.entity.effect.StatusEffectCategory;
|
|||||||
import net.minecraft.entity.effect.StatusEffectInstance;
|
import net.minecraft.entity.effect.StatusEffectInstance;
|
||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.entity.ModEntities;
|
||||||
|
import net.Chipperfluff.chipi.entity.PlayerJrEntity;
|
||||||
|
|
||||||
public class PregnantEffect extends StatusEffect {
|
public class PregnantEffect extends StatusEffect {
|
||||||
|
|
||||||
public static final int TOTAL_DURATION = 20 * 60 * 10; // 10 min
|
public static final int TOTAL_DURATION = 20 * 60 * 10; // 10 min
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package net.Chipperfluff.chipi.entity;
|
|||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.SlabBlock;
|
import net.minecraft.block.SlabBlock;
|
||||||
import net.minecraft.block.StairsBlock;
|
import net.minecraft.block.StairsBlock;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityType;
|
import net.minecraft.entity.EntityType;
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.entity.ai.goal.*;
|
import net.minecraft.entity.ai.goal.*;
|
||||||
@ -81,7 +82,7 @@ public class MepEntity extends PathAwareEntity {
|
|||||||
// === ATTACK OVERRIDE (AURA IMMUNITY) ===
|
// === ATTACK OVERRIDE (AURA IMMUNITY) ===
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean tryAttack(net.minecraft.entity.Entity target) {
|
public boolean tryAttack(Entity target) {
|
||||||
if (target instanceof PlayerEntity player) {
|
if (target instanceof PlayerEntity player) {
|
||||||
if (ProtectionAuraHandler.hasAura(player)) {
|
if (ProtectionAuraHandler.hasAura(player)) {
|
||||||
return false; // chase but never hit
|
return false; // chase but never hit
|
||||||
|
|||||||
@ -1,12 +1,9 @@
|
|||||||
package net.Chipperfluff.chipi.entity;
|
package net.Chipperfluff.chipi.entity;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.entity.MepEntity;
|
|
||||||
|
|
||||||
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder;
|
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder;
|
||||||
|
|
||||||
import net.minecraft.entity.EntityDimensions;
|
import net.minecraft.entity.EntityDimensions;
|
||||||
import net.minecraft.entity.SpawnGroup;
|
|
||||||
import net.minecraft.entity.EntityType;
|
import net.minecraft.entity.EntityType;
|
||||||
|
import net.minecraft.entity.SpawnGroup;
|
||||||
import net.minecraft.registry.Registries;
|
import net.minecraft.registry.Registries;
|
||||||
import net.minecraft.registry.Registry;
|
import net.minecraft.registry.Registry;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
@ -33,6 +30,5 @@ public final class ModEntities {
|
|||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
|
|
||||||
private ModEntities() {
|
private ModEntities() {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,7 +17,6 @@ import net.minecraft.text.Text;
|
|||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class PlayerJrEntity extends PathAwareEntity {
|
public class PlayerJrEntity extends PathAwareEntity {
|
||||||
|
|||||||
@ -2,10 +2,10 @@ package net.Chipperfluff.chipi.entity;
|
|||||||
|
|
||||||
import net.fabricmc.fabric.api.biome.v1.BiomeModifications;
|
import net.fabricmc.fabric.api.biome.v1.BiomeModifications;
|
||||||
import net.fabricmc.fabric.api.biome.v1.BiomeSelectors;
|
import net.fabricmc.fabric.api.biome.v1.BiomeSelectors;
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.Blocks;
|
import net.minecraft.block.Blocks;
|
||||||
import net.minecraft.entity.EntityType;
|
import net.minecraft.entity.EntityType;
|
||||||
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.entity.SpawnGroup;
|
import net.minecraft.entity.SpawnGroup;
|
||||||
import net.minecraft.entity.SpawnReason;
|
import net.minecraft.entity.SpawnReason;
|
||||||
import net.minecraft.entity.SpawnRestriction;
|
import net.minecraft.entity.SpawnRestriction;
|
||||||
@ -13,14 +13,12 @@ import net.minecraft.entity.mob.MobEntity;
|
|||||||
import net.minecraft.registry.RegistryKey;
|
import net.minecraft.registry.RegistryKey;
|
||||||
import net.minecraft.registry.RegistryKeys;
|
import net.minecraft.registry.RegistryKeys;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
import net.minecraft.util.math.Box;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.random.Random;
|
import net.minecraft.util.math.random.Random;
|
||||||
import net.minecraft.world.Heightmap;
|
import net.minecraft.world.Heightmap;
|
||||||
import net.minecraft.world.ServerWorldAccess;
|
import net.minecraft.world.ServerWorldAccess;
|
||||||
import net.minecraft.world.biome.Biome;
|
import net.minecraft.world.biome.Biome;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
|
||||||
import net.minecraft.util.math.Box;
|
|
||||||
|
|
||||||
|
|
||||||
public final class SpawnLogic {
|
public final class SpawnLogic {
|
||||||
|
|
||||||
@ -30,8 +28,7 @@ public final class SpawnLogic {
|
|||||||
private static final RegistryKey<Biome> VOID_BIOME =
|
private static final RegistryKey<Biome> VOID_BIOME =
|
||||||
RegistryKey.of(RegistryKeys.BIOME, new Identifier("chipi", "void"));
|
RegistryKey.of(RegistryKeys.BIOME, new Identifier("chipi", "void"));
|
||||||
|
|
||||||
private SpawnLogic() {
|
private SpawnLogic() {}
|
||||||
}
|
|
||||||
|
|
||||||
public static void register() {
|
public static void register() {
|
||||||
|
|
||||||
|
|||||||
@ -1,13 +1,14 @@
|
|||||||
package net.Chipperfluff.chipi.item;
|
package net.Chipperfluff.chipi.item;
|
||||||
|
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
|
import net.minecraft.entity.effect.StatusEffectInstance;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.item.Items;
|
import net.minecraft.item.Items;
|
||||||
import net.minecraft.util.UseAction;
|
import net.minecraft.util.UseAction;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.entity.effect.StatusEffectInstance;
|
|
||||||
import net.Chipperfluff.chipi.effect.ModEffects;
|
import net.Chipperfluff.chipi.effect.ModEffects;
|
||||||
|
|
||||||
public class MepMilkItem extends Item {
|
public class MepMilkItem extends Item {
|
||||||
|
|||||||
@ -20,5 +20,4 @@ public class ModFoodComponents {
|
|||||||
new FoodComponent.Builder()
|
new FoodComponent.Builder()
|
||||||
.alwaysEdible()
|
.alwaysEdible()
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,8 +1,5 @@
|
|||||||
package net.Chipperfluff.chipi.item;
|
package net.Chipperfluff.chipi.item;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.ChipiMod;
|
|
||||||
import net.Chipperfluff.chipi.block.ModBlocks;
|
|
||||||
import net.Chipperfluff.chipi.item.music.ModMusicDiscs;
|
|
||||||
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup;
|
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup;
|
||||||
import net.minecraft.item.ItemGroup;
|
import net.minecraft.item.ItemGroup;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
@ -11,6 +8,10 @@ import net.minecraft.registry.Registry;
|
|||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.ChipiMod;
|
||||||
|
import net.Chipperfluff.chipi.block.ModBlocks;
|
||||||
|
import net.Chipperfluff.chipi.item.music.ModMusicDiscs;
|
||||||
|
|
||||||
public class ModItemGroups {
|
public class ModItemGroups {
|
||||||
|
|
||||||
public static final ItemGroup CHIPI_GROUP = Registry.register(
|
public static final ItemGroup CHIPI_GROUP = Registry.register(
|
||||||
@ -59,7 +60,5 @@ public class ModItemGroups {
|
|||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
|
|
||||||
public static void register() {
|
public static void register() {}
|
||||||
// force class load
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,17 +1,16 @@
|
|||||||
package net.Chipperfluff.chipi.item;
|
package net.Chipperfluff.chipi.item;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.ChipiMod;
|
|
||||||
import net.Chipperfluff.chipi.block.ModBlocks;
|
|
||||||
import net.Chipperfluff.chipi.entity.ModEntities;
|
|
||||||
import net.Chipperfluff.chipi.item.armor.ChipperArmorMaterial;
|
|
||||||
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
|
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
|
||||||
import net.minecraft.item.*;
|
import net.minecraft.item.*;
|
||||||
import net.minecraft.registry.Registries;
|
import net.minecraft.registry.Registries;
|
||||||
import net.minecraft.registry.Registry;
|
import net.minecraft.registry.Registry;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.Chipperfluff.chipi.item.tool.ChipperToolMaterial;
|
|
||||||
import net.Chipperfluff.chipi.item.MepMilkItem;
|
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.ChipiMod;
|
||||||
|
import net.Chipperfluff.chipi.block.ModBlocks;
|
||||||
|
import net.Chipperfluff.chipi.entity.ModEntities;
|
||||||
|
import net.Chipperfluff.chipi.item.armor.ChipperArmorMaterial;
|
||||||
|
import net.Chipperfluff.chipi.item.tool.ChipperToolMaterial;
|
||||||
|
|
||||||
public class ModItems {
|
public class ModItems {
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,5 @@
|
|||||||
package net.Chipperfluff.chipi.item;
|
package net.Chipperfluff.chipi.item;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.effect.ModEffects;
|
|
||||||
import net.Chipperfluff.chipi.sound.ModSounds;
|
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.entity.effect.StatusEffectInstance;
|
import net.minecraft.entity.effect.StatusEffectInstance;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
@ -10,11 +8,14 @@ import net.minecraft.item.ItemStack;
|
|||||||
import net.minecraft.item.ItemUsage;
|
import net.minecraft.item.ItemUsage;
|
||||||
import net.minecraft.item.Items;
|
import net.minecraft.item.Items;
|
||||||
import net.minecraft.sound.SoundCategory;
|
import net.minecraft.sound.SoundCategory;
|
||||||
|
import net.minecraft.text.Text;
|
||||||
import net.minecraft.util.Hand;
|
import net.minecraft.util.Hand;
|
||||||
import net.minecraft.util.UseAction;
|
import net.minecraft.util.UseAction;
|
||||||
import net.minecraft.util.TypedActionResult;
|
import net.minecraft.util.TypedActionResult;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.text.Text;
|
|
||||||
|
import net.Chipperfluff.chipi.effect.ModEffects;
|
||||||
|
import net.Chipperfluff.chipi.sound.ModSounds;
|
||||||
|
|
||||||
public class PlayerMilkItem extends Item {
|
public class PlayerMilkItem extends Item {
|
||||||
|
|
||||||
|
|||||||
@ -1,16 +1,16 @@
|
|||||||
package net.Chipperfluff.chipi.item.armor;
|
package net.Chipperfluff.chipi.item.armor;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.item.ModItems;
|
|
||||||
import net.minecraft.item.ArmorItem;
|
import net.minecraft.item.ArmorItem;
|
||||||
import net.minecraft.item.ArmorMaterial;
|
import net.minecraft.item.ArmorMaterial;
|
||||||
import net.minecraft.recipe.Ingredient;
|
import net.minecraft.recipe.Ingredient;
|
||||||
import net.minecraft.sound.SoundEvent;
|
import net.minecraft.sound.SoundEvent;
|
||||||
import net.minecraft.sound.SoundEvents;
|
import net.minecraft.sound.SoundEvents;
|
||||||
import net.minecraft.util.Util;
|
import net.minecraft.util.Util;
|
||||||
|
|
||||||
import java.util.EnumMap;
|
import java.util.EnumMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.item.ModItems;
|
||||||
|
|
||||||
public class ChipperArmorMaterial implements ArmorMaterial {
|
public class ChipperArmorMaterial implements ArmorMaterial {
|
||||||
|
|
||||||
public static final ChipperArmorMaterial INSTANCE = new ChipperArmorMaterial();
|
public static final ChipperArmorMaterial INSTANCE = new ChipperArmorMaterial();
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package net.Chipperfluff.chipi.armor;
|
package net.Chipperfluff.chipi.armor;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.item.ModItems;
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.SlabBlock;
|
import net.minecraft.block.SlabBlock;
|
||||||
import net.minecraft.block.StairsBlock;
|
import net.minecraft.block.StairsBlock;
|
||||||
@ -12,8 +11,10 @@ import net.minecraft.text.Text;
|
|||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
import static net.Chipperfluff.chipi.util.ChipiTrackedData.CHIPI_ENERGY;
|
import net.Chipperfluff.chipi.item.ModItems;
|
||||||
|
|
||||||
import static net.Chipperfluff.chipi.server.ChipiServerEvents.CHIPI_DIMENSION_KEY;
|
import static net.Chipperfluff.chipi.server.ChipiServerEvents.CHIPI_DIMENSION_KEY;
|
||||||
|
import static net.Chipperfluff.chipi.util.ChipiTrackedData.CHIPI_ENERGY;
|
||||||
|
|
||||||
public final class ProtectionAuraHandler {
|
public final class ProtectionAuraHandler {
|
||||||
|
|
||||||
|
|||||||
@ -1,16 +1,16 @@
|
|||||||
package net.Chipperfluff.chipi.item.music;
|
package net.Chipperfluff.chipi.item.music;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.ChipiMod;
|
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.MusicDiscItem;
|
import net.minecraft.item.MusicDiscItem;
|
||||||
import net.minecraft.registry.Registries;
|
import net.minecraft.registry.Registries;
|
||||||
import net.minecraft.registry.Registry;
|
import net.minecraft.registry.Registry;
|
||||||
import net.minecraft.sound.SoundEvent;
|
import net.minecraft.sound.SoundEvent;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.ChipiMod;
|
||||||
|
|
||||||
public class ModMusicDiscs {
|
public class ModMusicDiscs {
|
||||||
|
|
||||||
private static final Map<String, Item> DISCS = new LinkedHashMap<>();
|
private static final Map<String, Item> DISCS = new LinkedHashMap<>();
|
||||||
|
|||||||
@ -1,8 +1,3 @@
|
|||||||
package net.Chipperfluff.chipi.item.music;
|
package net.Chipperfluff.chipi.item.music;
|
||||||
|
|
||||||
public record MusicDiscDef(
|
public record MusicDiscDef(String name, int comparatorOutput, int minutes, int seconds) {}
|
||||||
String name,
|
|
||||||
int comparatorOutput,
|
|
||||||
int minutes,
|
|
||||||
int seconds
|
|
||||||
) {}
|
|
||||||
|
|||||||
@ -2,8 +2,8 @@ package net.Chipperfluff.chipi.item.tool;
|
|||||||
|
|
||||||
import net.minecraft.item.ToolMaterial;
|
import net.minecraft.item.ToolMaterial;
|
||||||
import net.minecraft.recipe.Ingredient;
|
import net.minecraft.recipe.Ingredient;
|
||||||
import net.Chipperfluff.chipi.item.ModItems;
|
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.item.ModItems;
|
||||||
|
|
||||||
public enum ChipperToolMaterial implements ToolMaterial {
|
public enum ChipperToolMaterial implements ToolMaterial {
|
||||||
INSTANCE;
|
INSTANCE;
|
||||||
|
|||||||
@ -2,7 +2,6 @@ package net.Chipperfluff.chipi.mixin;
|
|||||||
|
|
||||||
import net.minecraft.entity.data.DataTracker;
|
import net.minecraft.entity.data.DataTracker;
|
||||||
import net.minecraft.entity.data.TrackedData;
|
import net.minecraft.entity.data.TrackedData;
|
||||||
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
|||||||
@ -1,9 +1,6 @@
|
|||||||
package net.Chipperfluff.chipi.mixin;
|
package net.Chipperfluff.chipi.mixin;
|
||||||
|
|
||||||
import com.mojang.authlib.GameProfile;
|
import com.mojang.authlib.GameProfile;
|
||||||
import net.Chipperfluff.chipi.effect.ModEffects;
|
|
||||||
import net.Chipperfluff.chipi.effect.PregnantEffect;
|
|
||||||
import net.Chipperfluff.chipi.util.ChipiTrackedData;
|
|
||||||
import net.minecraft.entity.data.DataTracker;
|
import net.minecraft.entity.data.DataTracker;
|
||||||
import net.minecraft.entity.effect.StatusEffectInstance;
|
import net.minecraft.entity.effect.StatusEffectInstance;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
@ -16,6 +13,10 @@ import org.spongepowered.asm.mixin.injection.At;
|
|||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.effect.ModEffects;
|
||||||
|
import net.Chipperfluff.chipi.effect.PregnantEffect;
|
||||||
|
import net.Chipperfluff.chipi.util.ChipiTrackedData;
|
||||||
|
|
||||||
@Mixin(PlayerEntity.class)
|
@Mixin(PlayerEntity.class)
|
||||||
public abstract class PlayerEntityMixin {
|
public abstract class PlayerEntityMixin {
|
||||||
|
|
||||||
|
|||||||
@ -1,34 +1,35 @@
|
|||||||
package net.Chipperfluff.chipi.server;
|
package net.Chipperfluff.chipi.server;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.SpawnPlacedState;
|
import net.fabricmc.fabric.api.biome.v1.BiomeModifications;
|
||||||
import net.Chipperfluff.chipi.armor.ProtectionAuraHandler;
|
import net.fabricmc.fabric.api.biome.v1.BiomeSelectors;
|
||||||
import net.Chipperfluff.chipi.block.ChipperPortalBlock;
|
|
||||||
import net.Chipperfluff.chipi.world.gen.ChipiDungeonGenerator;
|
|
||||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
||||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
|
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
|
||||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerWorldEvents;
|
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerWorldEvents;
|
||||||
|
import net.fabricmc.fabric.api.event.player.UseEntityCallback;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.item.Items;
|
||||||
import net.minecraft.registry.RegistryKey;
|
import net.minecraft.registry.RegistryKey;
|
||||||
import net.minecraft.registry.RegistryKeys;
|
import net.minecraft.registry.RegistryKeys;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
import net.minecraft.server.world.ServerWorld;
|
import net.minecraft.server.world.ServerWorld;
|
||||||
|
import net.minecraft.sound.SoundCategory;
|
||||||
|
import net.minecraft.sound.SoundEvents;
|
||||||
import net.minecraft.structure.StructurePlacementData;
|
import net.minecraft.structure.StructurePlacementData;
|
||||||
import net.minecraft.structure.StructureTemplate;
|
import net.minecraft.structure.StructureTemplate;
|
||||||
|
import net.minecraft.util.ActionResult;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.GameRules;
|
import net.minecraft.world.GameRules;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.fabricmc.fabric.api.biome.v1.BiomeModifications;
|
|
||||||
import net.fabricmc.fabric.api.biome.v1.BiomeSelectors;
|
|
||||||
import net.minecraft.world.gen.GenerationStep;
|
import net.minecraft.world.gen.GenerationStep;
|
||||||
import net.fabricmc.fabric.api.event.player.UseEntityCallback;
|
|
||||||
import net.minecraft.util.ActionResult;
|
import net.Chipperfluff.chipi.SpawnPlacedState;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.Chipperfluff.chipi.armor.ProtectionAuraHandler;
|
||||||
import net.minecraft.item.Items;
|
import net.Chipperfluff.chipi.block.ChipperPortalBlock;
|
||||||
import net.minecraft.sound.SoundCategory;
|
|
||||||
import net.minecraft.sound.SoundEvents;
|
|
||||||
import net.Chipperfluff.chipi.item.ModItems;
|
import net.Chipperfluff.chipi.item.ModItems;
|
||||||
|
import net.Chipperfluff.chipi.world.gen.ChipiDungeonGenerator;
|
||||||
|
|
||||||
|
|
||||||
public final class ChipiServerEvents {
|
public final class ChipiServerEvents {
|
||||||
|
|||||||
@ -1,11 +1,12 @@
|
|||||||
package net.Chipperfluff.chipi.sound;
|
package net.Chipperfluff.chipi.sound;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.ChipiMod;
|
|
||||||
import net.minecraft.registry.Registries;
|
import net.minecraft.registry.Registries;
|
||||||
import net.minecraft.registry.Registry;
|
import net.minecraft.registry.Registry;
|
||||||
import net.minecraft.sound.SoundEvent;
|
import net.minecraft.sound.SoundEvent;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.ChipiMod;
|
||||||
|
|
||||||
public class ModSounds {
|
public class ModSounds {
|
||||||
|
|
||||||
public static final SoundEvent MEP_MILK = register("entity.mep.milk");
|
public static final SoundEvent MEP_MILK = register("entity.mep.milk");
|
||||||
|
|||||||
@ -6,9 +6,7 @@ import net.minecraft.entity.data.TrackedDataHandlerRegistry;
|
|||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
|
||||||
public final class ChipiTrackedData {
|
public final class ChipiTrackedData {
|
||||||
|
public static final TrackedData<Float> CHIPI_ENERGY = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.FLOAT);
|
||||||
public static final TrackedData<Float> CHIPI_ENERGY =
|
|
||||||
DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.FLOAT);
|
|
||||||
|
|
||||||
private ChipiTrackedData() {}
|
private ChipiTrackedData() {}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,6 @@ package net.Chipperfluff.chipi.util;
|
|||||||
|
|
||||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|||||||
@ -2,7 +2,6 @@ package net.Chipperfluff.chipi.util;
|
|||||||
|
|
||||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
|
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|||||||
@ -1,11 +1,12 @@
|
|||||||
package net.Chipperfluff.chipi.world.gen;
|
package net.Chipperfluff.chipi.world.gen;
|
||||||
|
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.server.world.ServerWorld;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.world.gen.struct.CorridorEWStructure;
|
import net.Chipperfluff.chipi.world.gen.struct.CorridorEWStructure;
|
||||||
import net.Chipperfluff.chipi.world.gen.struct.CorridorNSStructure;
|
import net.Chipperfluff.chipi.world.gen.struct.CorridorNSStructure;
|
||||||
import net.Chipperfluff.chipi.world.gen.struct.RoomBaseStructure;
|
import net.Chipperfluff.chipi.world.gen.struct.RoomBaseStructure;
|
||||||
import net.minecraft.block.BlockState;
|
|
||||||
import net.minecraft.server.world.ServerWorld;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
|
||||||
|
|
||||||
public class ChipiDungeonGenerator {
|
public class ChipiDungeonGenerator {
|
||||||
|
|
||||||
@ -24,13 +25,10 @@ public class ChipiDungeonGenerator {
|
|||||||
|
|
||||||
// Center-to-center step so corridors start 1 block inside the north room and end 1 block inside
|
// Center-to-center step so corridors start 1 block inside the north room and end 1 block inside
|
||||||
// the south room.
|
// the south room.
|
||||||
private static final int STEP_Z =
|
private static final int STEP_Z = ROOM_EXTENT_SOUTH + CORRIDOR_LENGTH + ROOM_EXTENT_NORTH - 1; // 25
|
||||||
ROOM_EXTENT_SOUTH + CORRIDOR_LENGTH + ROOM_EXTENT_NORTH - 1; // 25
|
private static final int STEP_X = ROOM_EXTENT_EAST + CORRIDOR_LENGTH + ROOM_EXTENT_WEST - 1; // 25
|
||||||
private static final int STEP_X =
|
|
||||||
ROOM_EXTENT_EAST + CORRIDOR_LENGTH + ROOM_EXTENT_WEST - 1; // 25
|
|
||||||
|
|
||||||
private static final int ROWS_SOUTH =
|
private static final int ROWS_SOUTH = 40; // rows of rooms south of spawn (spawn room itself is already placed)
|
||||||
40; // rows of rooms south of spawn (spawn room itself is already placed)
|
|
||||||
private static final int COLS_EW = 40; // columns across X (split roughly evenly around center)
|
private static final int COLS_EW = 40; // columns across X (split roughly evenly around center)
|
||||||
|
|
||||||
private ChipiDungeonGenerator() {}
|
private ChipiDungeonGenerator() {}
|
||||||
@ -40,8 +38,7 @@ public class ChipiDungeonGenerator {
|
|||||||
// Spawn is already placed. Fixed anchors (not relative to portal):
|
// Spawn is already placed. Fixed anchors (not relative to portal):
|
||||||
// first corridor origin, then the first generated room center is south of spawn.
|
// first corridor origin, then the first generated room center is south of spawn.
|
||||||
BlockPos firstCorridorAnchor = new BlockPos(5, CORRIDOR_Y, 11);
|
BlockPos firstCorridorAnchor = new BlockPos(5, CORRIDOR_Y, 11);
|
||||||
BlockPos firstGeneratedRoomCenter =
|
BlockPos firstGeneratedRoomCenter = new BlockPos(5, ROOM_Y, 24); // explicit first floor anchor
|
||||||
new BlockPos(5, ROOM_Y, 24); // explicit first floor anchor
|
|
||||||
|
|
||||||
// First room/corridor use direct instances as requested.
|
// First room/corridor use direct instances as requested.
|
||||||
RoomBaseStructure firstRoom = WorldMaster.getDefaultRoom();
|
RoomBaseStructure firstRoom = WorldMaster.getDefaultRoom();
|
||||||
@ -60,16 +57,14 @@ public class ChipiDungeonGenerator {
|
|||||||
// Place rooms strictly southward (Z never decreases), across X in both directions.
|
// Place rooms strictly southward (Z never decreases), across X in both directions.
|
||||||
for (int row = 0; row < ROWS_SOUTH; row++) {
|
for (int row = 0; row < ROWS_SOUTH; row++) {
|
||||||
for (int col = minCol; col <= maxCol; col++) {
|
for (int col = minCol; col <= maxCol; col++) {
|
||||||
int gridX =
|
int gridX = col; // grid 0,0 is the first generated room; -X -> negative gridX, +X -> positive gridX
|
||||||
col; // grid 0,0 is the first generated room; -X -> negative gridX, +X ->
|
|
||||||
// positive gridX
|
|
||||||
int gridY = row; // gridY increases southward only
|
int gridY = row; // gridY increases southward only
|
||||||
|
|
||||||
BlockPos center =
|
BlockPos center = new BlockPos(
|
||||||
new BlockPos(
|
|
||||||
firstGeneratedRoomCenter.getX() + (col * STEP_X),
|
firstGeneratedRoomCenter.getX() + (col * STEP_X),
|
||||||
ROOM_Y,
|
ROOM_Y,
|
||||||
firstGeneratedRoomCenter.getZ() + (row * STEP_Z));
|
firstGeneratedRoomCenter.getZ() + (row * STEP_Z)
|
||||||
|
);
|
||||||
|
|
||||||
RoomBaseStructure room = WorldMaster.resolveRoom(ctx(world, gridX, gridY, center, null));
|
RoomBaseStructure room = WorldMaster.resolveRoom(ctx(world, gridX, gridY, center, null));
|
||||||
room.placeAt(world, center);
|
room.placeAt(world, center);
|
||||||
@ -84,20 +79,19 @@ public class ChipiDungeonGenerator {
|
|||||||
int gridX = col;
|
int gridX = col;
|
||||||
int gridY = row;
|
int gridY = row;
|
||||||
|
|
||||||
BlockPos currentCenter =
|
BlockPos currentCenter = new BlockPos(
|
||||||
new BlockPos(
|
|
||||||
firstGeneratedRoomCenter.getX() + (col * STEP_X),
|
firstGeneratedRoomCenter.getX() + (col * STEP_X),
|
||||||
ROOM_Y,
|
ROOM_Y,
|
||||||
firstGeneratedRoomCenter.getZ() + (row * STEP_Z));
|
firstGeneratedRoomCenter.getZ() + (row * STEP_Z)
|
||||||
|
);
|
||||||
|
|
||||||
BlockPos anchorSouth =
|
BlockPos anchorSouth = new BlockPos(
|
||||||
new BlockPos(
|
|
||||||
currentCenter.getX(),
|
currentCenter.getX(),
|
||||||
CORRIDOR_Y,
|
CORRIDOR_Y,
|
||||||
currentCenter.getZ() + ROOM_EXTENT_SOUTH);
|
currentCenter.getZ() + ROOM_EXTENT_SOUTH
|
||||||
|
);
|
||||||
|
|
||||||
CorridorNSStructure corridorNS =
|
CorridorNSStructure corridorNS = WorldMaster.resolveCorridorNS(ctx(world, gridX, gridY, anchorSouth, null));
|
||||||
WorldMaster.resolveCorridorNS(ctx(world, gridX, gridY, anchorSouth, null));
|
|
||||||
corridorNS.placeAt(world, anchorSouth);
|
corridorNS.placeAt(world, anchorSouth);
|
||||||
WorldMaster.afterPlaceCorridorNS(ctx(world, gridX, gridY, anchorSouth, corridorNS));
|
WorldMaster.afterPlaceCorridorNS(ctx(world, gridX, gridY, anchorSouth, corridorNS));
|
||||||
}
|
}
|
||||||
@ -109,20 +103,19 @@ public class ChipiDungeonGenerator {
|
|||||||
int gridX = col;
|
int gridX = col;
|
||||||
int gridY = row;
|
int gridY = row;
|
||||||
|
|
||||||
BlockPos currentCenter =
|
BlockPos currentCenter = new BlockPos(
|
||||||
new BlockPos(
|
|
||||||
firstGeneratedRoomCenter.getX() + (col * STEP_X),
|
firstGeneratedRoomCenter.getX() + (col * STEP_X),
|
||||||
ROOM_Y,
|
ROOM_Y,
|
||||||
firstGeneratedRoomCenter.getZ() + (row * STEP_Z));
|
firstGeneratedRoomCenter.getZ() + (row * STEP_Z)
|
||||||
|
);
|
||||||
|
|
||||||
BlockPos anchorEast =
|
BlockPos anchorEast = new BlockPos(
|
||||||
new BlockPos(
|
|
||||||
currentCenter.getX() + ROOM_EXTENT_EAST,
|
currentCenter.getX() + ROOM_EXTENT_EAST,
|
||||||
CORRIDOR_Y,
|
CORRIDOR_Y,
|
||||||
currentCenter.getZ());
|
currentCenter.getZ()
|
||||||
|
);
|
||||||
|
|
||||||
CorridorEWStructure corridorEW =
|
CorridorEWStructure corridorEW = WorldMaster.resolveCorridorEW(ctx(world, gridX, gridY, anchorEast, null));
|
||||||
WorldMaster.resolveCorridorEW(ctx(world, gridX, gridY, anchorEast, null));
|
|
||||||
corridorEW.placeAt(world, anchorEast);
|
corridorEW.placeAt(world, anchorEast);
|
||||||
WorldMaster.afterPlaceCorridorEW(ctx(world, gridX, gridY, anchorEast, corridorEW));
|
WorldMaster.afterPlaceCorridorEW(ctx(world, gridX, gridY, anchorEast, corridorEW));
|
||||||
}
|
}
|
||||||
@ -136,18 +129,10 @@ public class ChipiDungeonGenerator {
|
|||||||
|
|
||||||
runInChipi(world, "fill 7 87 15 3 91 16 minecraft:air");
|
runInChipi(world, "fill 7 87 15 3 91 16 minecraft:air");
|
||||||
|
|
||||||
runInChipi(
|
runInChipi(world, "setblock 4 88 15 minecraft:deepslate_tile_stairs[facing=west,waterlogged=true]");
|
||||||
world,
|
runInChipi(world, "setblock 4 88 16 minecraft:deepslate_tile_stairs[facing=west,waterlogged=true]");
|
||||||
"setblock 4 88 15 minecraft:deepslate_tile_stairs[facing=west,waterlogged=true]");
|
runInChipi(world, "setblock 6 88 15 minecraft:deepslate_tile_stairs[facing=east,waterlogged=true]");
|
||||||
runInChipi(
|
runInChipi(world, "setblock 6 88 16 minecraft:deepslate_tile_stairs[facing=east,waterlogged=true]");
|
||||||
world,
|
|
||||||
"setblock 4 88 16 minecraft:deepslate_tile_stairs[facing=west,waterlogged=true]");
|
|
||||||
runInChipi(
|
|
||||||
world,
|
|
||||||
"setblock 6 88 15 minecraft:deepslate_tile_stairs[facing=east,waterlogged=true]");
|
|
||||||
runInChipi(
|
|
||||||
world,
|
|
||||||
"setblock 6 88 16 minecraft:deepslate_tile_stairs[facing=east,waterlogged=true]");
|
|
||||||
|
|
||||||
runInChipi(world, "fill 7 88 15 7 91 16 minecraft:deepslate_tiles");
|
runInChipi(world, "fill 7 88 15 7 91 16 minecraft:deepslate_tiles");
|
||||||
runInChipi(world, "fill 3 88 16 3 91 15 minecraft:deepslate_tiles");
|
runInChipi(world, "fill 3 88 16 3 91 15 minecraft:deepslate_tiles");
|
||||||
@ -183,7 +168,8 @@ public class ChipiDungeonGenerator {
|
|||||||
.getCommandManager()
|
.getCommandManager()
|
||||||
.executeWithPrefix(
|
.executeWithPrefix(
|
||||||
world.getServer().getCommandSource(),
|
world.getServer().getCommandSource(),
|
||||||
"execute in chipi:chipi_dimension run " + command);
|
"execute in chipi:chipi_dimension run " + command
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static DungeonContext ctx(ServerWorld world, int gridX, int gridY, BlockPos origin, ChipiStructure structure) {
|
private static DungeonContext ctx(ServerWorld world, int gridX, int gridY, BlockPos origin, ChipiStructure structure) {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package net.Chipperfluff.chipi.world.gen;
|
package net.Chipperfluff.chipi.world.gen;
|
||||||
|
|
||||||
import java.util.Optional;
|
import net.minecraft.block.Blocks;
|
||||||
import net.minecraft.block.entity.StructureBlockBlockEntity;
|
import net.minecraft.block.entity.StructureBlockBlockEntity;
|
||||||
import net.minecraft.block.enums.StructureBlockMode;
|
import net.minecraft.block.enums.StructureBlockMode;
|
||||||
import net.minecraft.server.world.ServerWorld;
|
import net.minecraft.server.world.ServerWorld;
|
||||||
@ -9,7 +9,7 @@ import net.minecraft.structure.StructureTemplate;
|
|||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.Vec3i;
|
import net.minecraft.util.math.Vec3i;
|
||||||
import net.minecraft.block.Blocks;
|
import java.util.Optional;
|
||||||
|
|
||||||
public abstract class ChipiStructure {
|
public abstract class ChipiStructure {
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +1,11 @@
|
|||||||
package net.Chipperfluff.chipi.world.gen;
|
package net.Chipperfluff.chipi.world.gen;
|
||||||
|
|
||||||
|
import net.minecraft.block.Blocks;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.world.gen.struct.CorridorEWStructure;
|
import net.Chipperfluff.chipi.world.gen.struct.CorridorEWStructure;
|
||||||
import net.Chipperfluff.chipi.world.gen.struct.CorridorNSStructure;
|
import net.Chipperfluff.chipi.world.gen.struct.CorridorNSStructure;
|
||||||
import net.Chipperfluff.chipi.world.gen.struct.RoomBaseStructure;
|
import net.Chipperfluff.chipi.world.gen.struct.RoomBaseStructure;
|
||||||
import net.minecraft.block.Blocks;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
|
||||||
|
|
||||||
public final class WorldMaster {
|
public final class WorldMaster {
|
||||||
|
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
package net.Chipperfluff.chipi.world.gen.struct;
|
package net.Chipperfluff.chipi.world.gen.struct;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.world.gen.ChipiStructure; // <-- THIS WAS MISSING
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.world.gen.ChipiStructure; // <-- THIS WAS MISSING
|
||||||
|
|
||||||
public class ChipiStructures {
|
public class ChipiStructures {
|
||||||
|
|
||||||
private static final Map<String, ChipiStructure> REGISTRY = new HashMap<>();
|
private static final Map<String, ChipiStructure> REGISTRY = new HashMap<>();
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
package net.Chipperfluff.chipi.world.gen.struct;
|
package net.Chipperfluff.chipi.world.gen.struct;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.world.gen.ChipiStructure;
|
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.world.gen.ChipiStructure;
|
||||||
|
|
||||||
public class CorridorEWStructure extends ChipiStructure {
|
public class CorridorEWStructure extends ChipiStructure {
|
||||||
|
|
||||||
public CorridorEWStructure() {
|
public CorridorEWStructure() {
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
package net.Chipperfluff.chipi.world.gen.struct;
|
package net.Chipperfluff.chipi.world.gen.struct;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.world.gen.ChipiStructure;
|
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.world.gen.ChipiStructure;
|
||||||
|
|
||||||
public class CorridorNSStructure extends ChipiStructure {
|
public class CorridorNSStructure extends ChipiStructure {
|
||||||
|
|
||||||
public CorridorNSStructure() {
|
public CorridorNSStructure() {
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
package net.Chipperfluff.chipi.world.gen.struct;
|
package net.Chipperfluff.chipi.world.gen.struct;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.world.gen.ChipiStructure;
|
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.world.gen.ChipiStructure;
|
||||||
|
|
||||||
public class RoomBaseStructure extends ChipiStructure {
|
public class RoomBaseStructure extends ChipiStructure {
|
||||||
|
|
||||||
public RoomBaseStructure() {
|
public RoomBaseStructure() {
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
package net.Chipperfluff.chipi.world.gen.struct;
|
package net.Chipperfluff.chipi.world.gen.struct;
|
||||||
|
|
||||||
import net.Chipperfluff.chipi.world.gen.ChipiStructure;
|
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
import net.Chipperfluff.chipi.world.gen.ChipiStructure;
|
||||||
|
|
||||||
public class SpawnStructure extends ChipiStructure {
|
public class SpawnStructure extends ChipiStructure {
|
||||||
|
|
||||||
public SpawnStructure() {
|
public SpawnStructure() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user