Skip to content

Commit

Permalink
tabs are better
Browse files Browse the repository at this point in the history
  • Loading branch information
TropheusJ committed Sep 1, 2023
1 parent 17fefff commit d3c2adf
Show file tree
Hide file tree
Showing 371 changed files with 19,000 additions and 19,000 deletions.
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ insert_final_newline = true
indent_size = 2

[*.java]
# indent_style = tab
indent_style = tab
ij_continuation_indent_size = 8
ij_java_class_count_to_use_import_on_demand = 99
ij_java_names_count_to_use_import_on_demand = 99
682 changes: 341 additions & 341 deletions src/main/java/com/fusionflux/portalcubed/PortalCubed.java

Large diffs are not rendered by default.

26 changes: 13 additions & 13 deletions src/main/java/com/fusionflux/portalcubed/PortalCubedConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@
@SuppressWarnings("CanBeFinal")
public class PortalCubedConfig extends MidnightConfig {

@Entry @Client public static boolean enableRoundPortals = false;
@Entry public static boolean enableAccurateMovement = true;
@Entry public static int maxBridgeLength = 127;
@Entry public static float fizzlerDamage = 35;
@Entry public static float rocketDamage = 35;
@Entry public static float pelletDamage = 35;
@Entry public static float laserDamage = 3;
@Entry @Client public static boolean portalHudMode = false;
@Entry(min = 0, max = 100, isSlider = true) @Client public static int gelOverlayOpacity = 100;
@Entry @Client public static boolean staticPortalItemDrops = true;
@Entry @Client public static PortalRenderers renderer = PortalRenderers.DISABLED;
@Entry @Client public static boolean crossPortalEntityRendering = true;
@Entry(min = 0, max = 1000, isSlider = true) @Client public static int portalSmoothTime = 250;
@Entry @Client public static boolean enableRoundPortals = false;
@Entry public static boolean enableAccurateMovement = true;
@Entry public static int maxBridgeLength = 127;
@Entry public static float fizzlerDamage = 35;
@Entry public static float rocketDamage = 35;
@Entry public static float pelletDamage = 35;
@Entry public static float laserDamage = 3;
@Entry @Client public static boolean portalHudMode = false;
@Entry(min = 0, max = 100, isSlider = true) @Client public static int gelOverlayOpacity = 100;
@Entry @Client public static boolean staticPortalItemDrops = true;
@Entry @Client public static PortalRenderers renderer = PortalRenderers.DISABLED;
@Entry @Client public static boolean crossPortalEntityRendering = true;
@Entry(min = 0, max = 1000, isSlider = true) @Client public static int portalSmoothTime = 250;
}
54 changes: 27 additions & 27 deletions src/main/java/com/fusionflux/portalcubed/PortalCubedGameRules.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,33 +14,33 @@
import static com.fusionflux.portalcubed.PortalCubed.id;

public class PortalCubedGameRules {
public static final CustomGameRuleCategory CATEGORY = new CustomGameRuleCategory(
id(PortalCubed.MOD_ID),
Component.translatable("gamerule.category.portalcubed")
.withStyle(ChatFormatting.BOLD, ChatFormatting.YELLOW)
);
public static final CustomGameRuleCategory CATEGORY = new CustomGameRuleCategory(
id(PortalCubed.MOD_ID),
Component.translatable("gamerule.category.portalcubed")
.withStyle(ChatFormatting.BOLD, ChatFormatting.YELLOW)
);

public static final GameRules.Key<GameRules.BooleanValue> ALLOW_CROUCH_FLY_GLITCH = GameRuleRegistry.register(
"allowCrouchFlyGlitch", CATEGORY, GameRuleFactory.createBooleanRule(true, (server, rule) -> {
final FriendlyByteBuf buf = PacketByteBufs.create();
buf.writeBoolean(rule.get());
server.getPlayerList().broadcastAll(ServerPlayNetworking.createS2CPacket(PortalCubedClientPackets.ENABLE_CFG, buf));
})
);
public static final GameRules.Key<GameRules.IntegerValue> PORTAL_ALIGNMENT = GameRuleRegistry.register(
"portalAlignment", CATEGORY, GameRuleFactory.createIntRule(16, 0)
);
public static final GameRules.Key<GameRules.BooleanValue> DISABLE_PORTAL_VALIDATION = GameRuleRegistry.register(
"disablePortalValidation", CATEGORY, GameRuleFactory.createBooleanRule(false)
);
public static final GameRules.Key<GameRules.BooleanValue> USE_PORTAL_HUD = GameRuleRegistry.register(
"usePortalHud", CATEGORY, GameRuleFactory.createBooleanRule(false, (server, rule) -> {
final FriendlyByteBuf buf = PacketByteBufs.create();
buf.writeBoolean(rule.get());
server.getPlayerList().broadcastAll(ServerPlayNetworking.createS2CPacket(PortalCubedClientPackets.ENABLE_PORTAL_HUD, buf));
})
);
public static final GameRules.Key<GameRules.BooleanValue> ALLOW_CROUCH_FLY_GLITCH = GameRuleRegistry.register(
"allowCrouchFlyGlitch", CATEGORY, GameRuleFactory.createBooleanRule(true, (server, rule) -> {
final FriendlyByteBuf buf = PacketByteBufs.create();
buf.writeBoolean(rule.get());
server.getPlayerList().broadcastAll(ServerPlayNetworking.createS2CPacket(PortalCubedClientPackets.ENABLE_CFG, buf));
})
);
public static final GameRules.Key<GameRules.IntegerValue> PORTAL_ALIGNMENT = GameRuleRegistry.register(
"portalAlignment", CATEGORY, GameRuleFactory.createIntRule(16, 0)
);
public static final GameRules.Key<GameRules.BooleanValue> DISABLE_PORTAL_VALIDATION = GameRuleRegistry.register(
"disablePortalValidation", CATEGORY, GameRuleFactory.createBooleanRule(false)
);
public static final GameRules.Key<GameRules.BooleanValue> USE_PORTAL_HUD = GameRuleRegistry.register(
"usePortalHud", CATEGORY, GameRuleFactory.createBooleanRule(false, (server, rule) -> {
final FriendlyByteBuf buf = PacketByteBufs.create();
buf.writeBoolean(rule.get());
server.getPlayerList().broadcastAll(ServerPlayNetworking.createS2CPacket(PortalCubedClientPackets.ENABLE_PORTAL_HUD, buf));
})
);

public static void register() {
}
public static void register() {
}
}
250 changes: 125 additions & 125 deletions src/main/java/com/fusionflux/portalcubed/PortalTabsLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,135 +35,135 @@
import static com.fusionflux.portalcubed.PortalCubed.id;

public class PortalTabsLoader {
private static final Map<String, Function<JsonObject, Predicate<CreativeModeTab.ItemDisplayParameters>>> CONDITION_TYPES = Map.of(
"and", o -> GsonHelper.getAsJsonArray(o, "conditions")
.asList()
.stream()
.map(PortalTabsLoader::parseCondition)
.reduce(Predicate::and)
.orElse(e -> true),
"or", o -> GsonHelper.getAsJsonArray(o, "conditions")
.asList()
.stream()
.map(PortalTabsLoader::parseCondition)
.reduce(Predicate::or)
.orElse(e -> false),
"not", o -> parseCondition(o.get("condition")).negate(),
"hasPermissions", o -> CreativeModeTab.ItemDisplayParameters::hasPermissions,
"hasFeatures", o -> {
final FeatureFlagSet flags = FeatureFlags.REGISTRY.fromNames(
GsonHelper.getAsJsonArray(o, "flags")
.asList()
.stream()
.map(e -> new ResourceLocation(GsonHelper.convertToString(e, "flag")))
::iterator
);
return p -> flags.isSubsetOf(p.enabledFeatures());
}
);
private static final Map<String, Function<JsonObject, Predicate<CreativeModeTab.ItemDisplayParameters>>> CONDITION_TYPES = Map.of(
"and", o -> GsonHelper.getAsJsonArray(o, "conditions")
.asList()
.stream()
.map(PortalTabsLoader::parseCondition)
.reduce(Predicate::and)
.orElse(e -> true),
"or", o -> GsonHelper.getAsJsonArray(o, "conditions")
.asList()
.stream()
.map(PortalTabsLoader::parseCondition)
.reduce(Predicate::or)
.orElse(e -> false),
"not", o -> parseCondition(o.get("condition")).negate(),
"hasPermissions", o -> CreativeModeTab.ItemDisplayParameters::hasPermissions,
"hasFeatures", o -> {
final FeatureFlagSet flags = FeatureFlags.REGISTRY.fromNames(
GsonHelper.getAsJsonArray(o, "flags")
.asList()
.stream()
.map(e -> new ResourceLocation(GsonHelper.convertToString(e, "flag")))
::iterator
);
return p -> flags.isSubsetOf(p.enabledFeatures());
}
);

public static void load(ModContainer mod) {
final JsonObject jsonObject;
try (Reader reader = Files.newBufferedReader(mod.getPath("portal_tabs.json"))) {
jsonObject = GsonHelper.parse(reader);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
load(jsonObject);
}
public static void load(ModContainer mod) {
final JsonObject jsonObject;
try (Reader reader = Files.newBufferedReader(mod.getPath("portal_tabs.json"))) {
jsonObject = GsonHelper.parse(reader);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
load(jsonObject);
}

private static void load(JsonObject jsonObject) {
for (final var entry : jsonObject.entrySet()) {
final CreativeModeTab.Builder builder = FabricItemGroup.builder();
final JsonObject entryData = GsonHelper.convertToJsonObject(entry.getValue(), "tab");
if (entryData.has("title")) {
builder.title(Component.Serializer.fromJson(entryData.get("title")));
}
if (entryData.has("icon")) {
builder.icon(parseItemStack(entryData.get("icon"), "icon"));
}
if (entryData.has("rightAlign") && GsonHelper.getAsBoolean(entryData, "rightAlign")) {
builder.alignedRight();
}
if (entryData.has("showTitle") && !GsonHelper.getAsBoolean(entryData, "showTitle")) {
builder.hideTitle();
}
if (entryData.has("scrollBar") && !GsonHelper.getAsBoolean(entryData, "scrollBar")) {
builder.noScrollBar();
}
if (entryData.has("backgroundImage")) {
builder.backgroundSuffix(GsonHelper.getAsString(entryData, "backgroundImage"));
}
if (entryData.has("items")) {
final var items = GsonHelper.getAsJsonArray(entryData, "items")
.asList()
.stream()
.map(e -> {
if (e.isJsonPrimitive() || (e.isJsonObject() && !e.getAsJsonObject().has("condition"))) {
return Pair.of(
(Predicate<CreativeModeTab.ItemDisplayParameters>)p -> true,
List.of(parseItemStack(e, "item").get())
);
}
return Pair.of(parseCondition(e), parseItemArray((JsonObject)e));
})
.toList();
builder.displayItems((itemDisplayParameters, output) -> {
for (final var condition : items) {
if (condition.key().test(itemDisplayParameters)) {
output.acceptAll(condition.value());
}
}
});
}
Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, id(entry.getKey()), builder.build());
}
}
private static void load(JsonObject jsonObject) {
for (final var entry : jsonObject.entrySet()) {
final CreativeModeTab.Builder builder = FabricItemGroup.builder();
final JsonObject entryData = GsonHelper.convertToJsonObject(entry.getValue(), "tab");
if (entryData.has("title")) {
builder.title(Component.Serializer.fromJson(entryData.get("title")));
}
if (entryData.has("icon")) {
builder.icon(parseItemStack(entryData.get("icon"), "icon"));
}
if (entryData.has("rightAlign") && GsonHelper.getAsBoolean(entryData, "rightAlign")) {
builder.alignedRight();
}
if (entryData.has("showTitle") && !GsonHelper.getAsBoolean(entryData, "showTitle")) {
builder.hideTitle();
}
if (entryData.has("scrollBar") && !GsonHelper.getAsBoolean(entryData, "scrollBar")) {
builder.noScrollBar();
}
if (entryData.has("backgroundImage")) {
builder.backgroundSuffix(GsonHelper.getAsString(entryData, "backgroundImage"));
}
if (entryData.has("items")) {
final var items = GsonHelper.getAsJsonArray(entryData, "items")
.asList()
.stream()
.map(e -> {
if (e.isJsonPrimitive() || (e.isJsonObject() && !e.getAsJsonObject().has("condition"))) {
return Pair.of(
(Predicate<CreativeModeTab.ItemDisplayParameters>)p -> true,
List.of(parseItemStack(e, "item").get())
);
}
return Pair.of(parseCondition(e), parseItemArray((JsonObject)e));
})
.toList();
builder.displayItems((itemDisplayParameters, output) -> {
for (final var condition : items) {
if (condition.key().test(itemDisplayParameters)) {
output.acceptAll(condition.value());
}
}
});
}
Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, id(entry.getKey()), builder.build());
}
}

private static List<ItemStack> parseItemArray(JsonObject owner) {
return GsonHelper.getAsJsonArray(owner, "items", new JsonArray())
.asList()
.stream()
.map(e -> parseItemStack(e, "item").get())
.toList();
}
private static List<ItemStack> parseItemArray(JsonObject owner) {
return GsonHelper.getAsJsonArray(owner, "items", new JsonArray())
.asList()
.stream()
.map(e -> parseItemStack(e, "item").get())
.toList();
}

private static Supplier<ItemStack> parseItemStack(JsonElement element, String memberName) {
if (element.isJsonPrimitive()) {
final Item item = getItem(GsonHelper.convertToString(element, memberName));
return () -> new ItemStack(item);
}
final JsonObject object = GsonHelper.convertToJsonObject(element, memberName);
final Item item = getItem(GsonHelper.getAsString(object, "id"));
final int count = object.has("count") ? GsonHelper.getAsInt(object, "count") : 1;
final CompoundTag tag;
try {
tag = object.has("nbt")
? new TagParser(new StringReader(GsonHelper.getAsString(object, "nbt"))).readStruct()
: null;
} catch (CommandSyntaxException e) {
throw new RuntimeException(e);
}
return () -> {
final ItemStack stack = new ItemStack(item, count);
if (tag != null) {
stack.setTag(tag);
}
return stack;
};
}
private static Supplier<ItemStack> parseItemStack(JsonElement element, String memberName) {
if (element.isJsonPrimitive()) {
final Item item = getItem(GsonHelper.convertToString(element, memberName));
return () -> new ItemStack(item);
}
final JsonObject object = GsonHelper.convertToJsonObject(element, memberName);
final Item item = getItem(GsonHelper.getAsString(object, "id"));
final int count = object.has("count") ? GsonHelper.getAsInt(object, "count") : 1;
final CompoundTag tag;
try {
tag = object.has("nbt")
? new TagParser(new StringReader(GsonHelper.getAsString(object, "nbt"))).readStruct()
: null;
} catch (CommandSyntaxException e) {
throw new RuntimeException(e);
}
return () -> {
final ItemStack stack = new ItemStack(item, count);
if (tag != null) {
stack.setTag(tag);
}
return stack;
};
}

private static Predicate<CreativeModeTab.ItemDisplayParameters> parseCondition(JsonElement element) {
final JsonObject object = GsonHelper.convertToJsonObject(element, "condition");
return CONDITION_TYPES.get(GsonHelper.getAsString(object, "condition")).apply(object);
}
private static Predicate<CreativeModeTab.ItemDisplayParameters> parseCondition(JsonElement element) {
final JsonObject object = GsonHelper.convertToJsonObject(element, "condition");
return CONDITION_TYPES.get(GsonHelper.getAsString(object, "condition")).apply(object);
}

private static Item getItem(String id) {
final ResourceLocation path = new ResourceLocation(id);
final Item item = BuiltInRegistries.ITEM.get(path);
if (item == Items.AIR) {
throw new IllegalArgumentException("Unknown item " + id);
}
return item;
}
private static Item getItem(String id) {
final ResourceLocation path = new ResourceLocation(id);
final Item item = BuiltInRegistries.ITEM.get(path);
if (item == Items.AIR) {
throw new IllegalArgumentException("Unknown item " + id);
}
return item;
}
}
10 changes: 5 additions & 5 deletions src/main/java/com/fusionflux/portalcubed/TeleportResult.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
import net.minecraft.world.phys.Vec3;

public record TeleportResult(
Vec3 dest,
float yaw,
float pitch,
Vec3 velocity,
IPQuaternion immediateFinalRot
Vec3 dest,
float yaw,
float pitch,
Vec3 velocity,
IPQuaternion immediateFinalRot
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
import java.util.Optional;

public interface AdvancedRaycastResultHolder {
Optional<AdvancedEntityRaycast.Result> getResult();
void setResult(Optional<AdvancedEntityRaycast.Result> result);
Optional<AdvancedEntityRaycast.Result> getResult();
void setResult(Optional<AdvancedEntityRaycast.Result> result);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import org.jetbrains.annotations.Nullable;

public interface BakedQuadExt {
@Nullable
String portalcubed$getRenderType();
@Nullable
String portalcubed$getRenderType();

void portalcubed$setRenderType(String type);
void portalcubed$setRenderType(String type);
}
Loading

0 comments on commit d3c2adf

Please sign in to comment.