feat(D-01/D): V1 cleanup — delete 28 files, ~5400 lines removed

D1: ThreadLocal alert suppression moved from ItemCollar to CollarHelper.
    onCollarRemoved() logic (kidnapper alert) moved to CollarHelper.

D2+D3: Deleted 17 V1 item classes + 4 V1-only interfaces:
  ItemBind, ItemGag, ItemBlindfold, ItemCollar, ItemEarplugs, ItemMittens,
  ItemColor, ItemClassicCollar, ItemShockCollar, ItemShockCollarAuto,
  ItemGpsCollar, ItemChokeCollar, ItemHood, ItemMedicalGag,
  IBondageItem, IHasGaggingEffect, IHasBlindingEffect, IAdjustable

D4: KidnapperTheme/KidnapperItemSelector/DispenserBehaviors migrated
    from variant enums to string-based DataDrivenItemRegistry IDs.

D5: Deleted 11 variant enums + Generic* factories + ItemBallGag3D:
  BindVariant, GagVariant, BlindfoldVariant, EarplugsVariant, MittensVariant,
  GenericBind, GenericGag, GenericBlindfold, GenericEarplugs, GenericMittens

D6: ModItems cleaned — all V1 bondage registrations removed.
D7: ModCreativeTabs rewritten — iterates DataDrivenItemRegistry.
D8+D9: All V2 helpers cleaned (V1 fallbacks removed), orphan imports removed.

Zero V1 bondage code references remain (only Javadoc comments).
All bondage items are now data-driven via 47 JSON definitions.
This commit is contained in:
NotEvil
2026-04-15 01:55:16 +02:00
parent fccb99ef9a
commit 099cd0d984
89 changed files with 2647 additions and 5423 deletions

View File

@@ -1,42 +1,33 @@
package com.tiedup.remake.entities;
import com.tiedup.remake.items.base.BindVariant;
import com.tiedup.remake.items.base.BlindfoldVariant;
import com.tiedup.remake.items.base.GagVariant;
import java.util.Random;
/**
* Defines themed item sets for kidnappers.
* Each theme groups compatible binds, gags, and blindfolds.
* Each theme groups compatible binds, gags, and blindfolds by registry name.
*
* Themes are selected randomly with weighted probabilities.
* Higher weight = more common theme.
*
* Note: Natural themes (SLIME, VINE, WEB) are reserved for monsters.
*
* Registry names correspond to data-driven bondage item IDs in DataDrivenItemRegistry.
*/
public enum KidnapperTheme {
// === ROPE THEMES (most common) ===
ROPE(
BindVariant.ROPES,
new GagVariant[] {
GagVariant.ROPES_GAG,
GagVariant.CLOTH_GAG,
GagVariant.CLEAVE_GAG,
},
new BlindfoldVariant[] { BlindfoldVariant.CLASSIC },
"ropes",
new String[] { "ropes_gag", "cloth_gag", "cleave_gag" },
new String[] { "classic_blindfold" },
true, // supportsColor
30 // weight (spawn probability)
),
SHIBARI(
BindVariant.SHIBARI,
new GagVariant[] {
GagVariant.ROPES_GAG,
GagVariant.CLOTH_GAG,
GagVariant.RIBBON_GAG,
},
new BlindfoldVariant[] { BlindfoldVariant.CLASSIC },
"shibari",
new String[] { "ropes_gag", "cloth_gag", "ribbon_gag" },
new String[] { "classic_blindfold" },
true,
15
),
@@ -44,9 +35,9 @@ public enum KidnapperTheme {
// === TAPE THEME ===
TAPE(
BindVariant.DUCT_TAPE,
new GagVariant[] { GagVariant.TAPE_GAG, GagVariant.WRAP_GAG },
new BlindfoldVariant[] { BlindfoldVariant.MASK },
"duct_tape",
new String[] { "tape_gag", "wrap_gag" },
new String[] { "mask_blindfold" },
true,
20
),
@@ -54,13 +45,9 @@ public enum KidnapperTheme {
// === LEATHER/BDSM THEME ===
LEATHER(
BindVariant.LEATHER_STRAPS,
new GagVariant[] {
GagVariant.BALL_GAG,
GagVariant.BALL_GAG_STRAP,
GagVariant.PANEL_GAG,
},
new BlindfoldVariant[] { BlindfoldVariant.MASK },
"leather_straps",
new String[] { "ball_gag", "ball_gag_strap", "panel_gag" },
new String[] { "mask_blindfold" },
false,
15
),
@@ -68,12 +55,9 @@ public enum KidnapperTheme {
// === CHAIN THEME ===
CHAIN(
BindVariant.CHAIN,
new GagVariant[] {
GagVariant.CHAIN_PANEL_GAG,
GagVariant.BALL_GAG_STRAP,
},
new BlindfoldVariant[] { BlindfoldVariant.MASK },
"chain",
new String[] { "chain_panel_gag", "ball_gag_strap" },
new String[] { "mask_blindfold" },
false,
10
),
@@ -81,13 +65,9 @@ public enum KidnapperTheme {
// === MEDICAL THEME ===
MEDICAL(
BindVariant.MEDICAL_STRAPS,
new GagVariant[] {
GagVariant.TUBE_GAG,
GagVariant.SPONGE_GAG,
GagVariant.BALL_GAG,
},
new BlindfoldVariant[] { BlindfoldVariant.MASK },
"medical_straps",
new String[] { "tube_gag", "sponge_gag", "ball_gag" },
new String[] { "mask_blindfold" },
false,
8
),
@@ -95,9 +75,9 @@ public enum KidnapperTheme {
// === SCI-FI/BEAM THEME ===
BEAM(
BindVariant.BEAM_CUFFS,
new GagVariant[] { GagVariant.BEAM_PANEL_GAG, GagVariant.LATEX_GAG },
new BlindfoldVariant[] { BlindfoldVariant.MASK },
"beam_cuffs",
new String[] { "beam_panel_gag", "latex_gag" },
new String[] { "mask_blindfold" },
false,
5
),
@@ -105,9 +85,9 @@ public enum KidnapperTheme {
// === LATEX THEME (rare) ===
LATEX(
BindVariant.LATEX_SACK,
new GagVariant[] { GagVariant.LATEX_GAG, GagVariant.TUBE_GAG },
new BlindfoldVariant[] { BlindfoldVariant.MASK },
"latex_sack",
new String[] { "latex_gag", "tube_gag" },
new String[] { "mask_blindfold" },
false,
3
),
@@ -115,13 +95,9 @@ public enum KidnapperTheme {
// === ASYLUM THEME (rare) ===
ASYLUM(
BindVariant.STRAITJACKET,
new GagVariant[] {
GagVariant.BITE_GAG,
GagVariant.SPONGE_GAG,
GagVariant.BALL_GAG,
},
new BlindfoldVariant[] { BlindfoldVariant.MASK },
"straitjacket",
new String[] { "bite_gag", "sponge_gag", "ball_gag" },
new String[] { "mask_blindfold" },
false,
5
),
@@ -129,9 +105,9 @@ public enum KidnapperTheme {
// === RIBBON THEME (cute/playful) ===
RIBBON(
BindVariant.RIBBON,
new GagVariant[] { GagVariant.RIBBON_GAG, GagVariant.CLOTH_GAG },
new BlindfoldVariant[] { BlindfoldVariant.CLASSIC },
"ribbon",
new String[] { "ribbon_gag", "cloth_gag" },
new String[] { "classic_blindfold" },
false,
8
),
@@ -139,54 +115,54 @@ public enum KidnapperTheme {
// === WRAP THEME ===
WRAP(
BindVariant.WRAP,
new GagVariant[] { GagVariant.WRAP_GAG, GagVariant.TAPE_GAG },
new BlindfoldVariant[] { BlindfoldVariant.MASK },
"wrap",
new String[] { "wrap_gag", "tape_gag" },
new String[] { "mask_blindfold" },
false,
5
);
private static final Random RANDOM = new Random();
private final BindVariant bind;
private final GagVariant[] gags;
private final BlindfoldVariant[] blindfolds;
private final String bindId;
private final String[] gagIds;
private final String[] blindfoldIds;
private final boolean supportsColor;
private final int weight;
KidnapperTheme(
BindVariant bind,
GagVariant[] gags,
BlindfoldVariant[] blindfolds,
String bindId,
String[] gagIds,
String[] blindfoldIds,
boolean supportsColor,
int weight
) {
this.bind = bind;
this.gags = gags;
this.blindfolds = blindfolds;
this.bindId = bindId;
this.gagIds = gagIds;
this.blindfoldIds = blindfoldIds;
this.supportsColor = supportsColor;
this.weight = weight;
}
/**
* Get the primary bind for this theme.
* Get the primary bind registry name for this theme.
*/
public BindVariant getBind() {
return bind;
public String getBindId() {
return bindId;
}
/**
* Get compatible gags for this theme (ordered by preference).
* Get compatible gag IDs for this theme (ordered by preference).
*/
public GagVariant[] getGags() {
return gags;
public String[] getGagIds() {
return gagIds;
}
/**
* Get compatible blindfolds for this theme.
* Get compatible blindfold IDs for this theme.
*/
public BlindfoldVariant[] getBlindfolds() {
return blindfolds;
public String[] getBlindfoldIds() {
return blindfoldIds;
}
/**
@@ -206,41 +182,40 @@ public enum KidnapperTheme {
}
/**
* Get primary gag (first in list).
* Used when only one gag is selected.
* Get primary gag ID (first in list).
*/
public GagVariant getPrimaryGag() {
return gags.length > 0 ? gags[0] : GagVariant.BALL_GAG;
public String getPrimaryGagId() {
return gagIds.length > 0 ? gagIds[0] : "ball_gag";
}
/**
* Get a random gag from this theme's compatible list.
* Get a random gag ID from this theme's compatible list.
*/
public GagVariant getRandomGag() {
if (gags.length == 0) return GagVariant.BALL_GAG;
return gags[RANDOM.nextInt(gags.length)];
public String getRandomGagId() {
if (gagIds.length == 0) return "ball_gag";
return gagIds[RANDOM.nextInt(gagIds.length)];
}
/**
* Get primary blindfold (first in list).
* Get primary blindfold ID (first in list).
*/
public BlindfoldVariant getPrimaryBlindfold() {
return blindfolds.length > 0 ? blindfolds[0] : BlindfoldVariant.CLASSIC;
public String getPrimaryBlindfoldId() {
return blindfoldIds.length > 0 ? blindfoldIds[0] : "classic_blindfold";
}
/**
* Get a random blindfold from this theme's compatible list.
* Get a random blindfold ID from this theme's compatible list.
*/
public BlindfoldVariant getRandomBlindfold() {
if (blindfolds.length == 0) return BlindfoldVariant.CLASSIC;
return blindfolds[RANDOM.nextInt(blindfolds.length)];
public String getRandomBlindfoldId() {
if (blindfoldIds.length == 0) return "classic_blindfold";
return blindfoldIds[RANDOM.nextInt(blindfoldIds.length)];
}
/**
* Check if this theme has any blindfolds.
*/
public boolean hasBlindfolds() {
return blindfolds.length > 0;
return blindfoldIds.length > 0;
}
/**